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



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

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

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

多个find/replace可以用分号;分隔。-i在原地编辑文件,-e运行脚本。

对于您的特定示例,反斜杠和逗号使它有点困难,但这应该可以工作:

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

从你的描述来看,这可能是你想要的:

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,,,,

相关内容

  • 没有找到相关文章

最新更新