如何使用SED或AWK将带双引号的CSV转换为OpenCSV?

时间:2015-08-27 18:18:21

标签: regex bash awk sed opencsv

我想使用unix实用程序SED或AWK将带双引号的CSV转换为OpenCSV(没有双引号,逗号用反斜杠转义)。我确实找到了perl或java在线的例子,但我正在寻找一个只使用基本的SED或AWK完成的例子。

2 个答案:

答案 0 :(得分:0)

不确定OpenCSV标准,但根据您的描述,您可以使用它来使用SED进行查找和替换。

sed -i -e 's/FINDME/REPLACEWITH/g' folder/file.csv

多个查找/替换可以用分号;分隔。 -i编辑了一个文件,-e运行了一个脚本。

因此,对于您的特定示例,反斜杠和逗号会使它有点困难,但这应该有效:

sed -i -e 's/"/'\''/g;s/,/\\,/g' file.csv

答案 1 :(得分:0)

根据您的描述,这可能就是您所追求的目标:

awk -F'" *, *"|^ *"|" *$' '{a="";for(i=2;i<=NF-1;i++){gsub(/,/,"\\,",$i); if(a){a=a","$i}else{a=$i}};print a}

bash示例:

awk -F'" *, *"|^ *"|" *$' '{a="";for(i=2;i<=NF-1;i++){gsub(/,/,"\\,",$i); if(a){a=a","$i}else{a=$i}};print a}'<<<$'"a","b",","\n"d", "e" ,",,,"'
a,b,\,
d,e,\,\,\,