删除内部带有分米的CSV中的双引号

时间:2014-01-26 20:54:25

标签: shell unix awk

awk -F , '{if ($2 ~ /^".*"$/) $2 = substr($2, 2, length($2)-2); {gsub(/""/, "", $2);} print $2;}' sample.csv

我已经开始使用上面的awk删除第二列中的双引号。 awk对于以下内容正常工作

sample.csv

文件, “文件2”,file3的

带有awk

以上的sample.csv的输出

文件,文件2,文件3

awk不适用于以下情况

sample1.csv

文件, “FIL,E2”,file3的

带有awk

以上的sample1.txt的输出

文件, “FIL,E2”,file3的

sample1.txt的必需输出

文件,文件2,文件3

我知道问题是因为Double引号中的逗号分隔符,有没有办法跳过这个。
我想删除第二列上的双引号(源可能在双引号内包含多个逗号(,),如“fi,l,e2”)

1 个答案:

答案 0 :(得分:5)

$ cat file
file,"file2",file3,"a,b,c","d,e"

$ awk -F'"' -v OFS= '{for (i=2;i<=NF;i+=2) gsub(/,/,"",$i)}1' file
file,file2,file3,abc,de