我想使用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,,,,