使用字段内的分隔符从文件中提取字段

Extract fields from file with seperator inside field

我有一个以逗号分隔的文件,如本例所示:

1,2,Hello, World,3,4
2,3,Something very, different.,4,5

如何将字段 3 提取为 "Hello, World" 和 "Something very, different."?

嗯,一般来说你不能。

如果其余字段是数字,您可以提取字母字段。或者,如果您知道有 5 个字段并且前两个和后两个不是复合字段,则可以提取中间的字段。

这是后者的脚本

$ awk -F, '{line=sep=""   
            for(i=3;i<NF-1;i++) {line=line sep $i; sep=FS} 
            print line}' confused

Hello, World
Something very, different.
$ awk '{gsub(/^([^,]+,){2}|(,[^,]){2}$/,"")} 1' file
Hello, World
Something very, different.

$ sed -r 's/^([^,]+,){2}|(,[^,]){2}$//g' file
Hello, World
Something very, different.
awk -F, -vOFS=, '{print , }' file
Hello, World              
Something very, different.
$ awk -F'[0-9],|,[0-9]' '{print }' file
Hello, World
Something very, different.

这是通过将字段分隔符设为任何与逗号相连的数字,将中间的任何其他内容保留为第三个字段来实现的。