【发布时间】:2021-04-14 05:14:10
【问题描述】:
我在 Unix 中将双引号 CSV 转换为管道分隔的 txt 文件。 我已使用以下 sed 命令将“,”替换为 |然后删除开始和结束双引号。
sed -e 's/","/|/g' -e 's/"//g' filenm.csv > filenm.txt
但文件似乎有连续的逗号,没有双引号,并且没有被替换。
Col1|col2|col3|col4|col5|col6|col7|col8
Val1|val2|val3,,,,val7|val8
现在我想将所有这些连续的逗号转换为连续的管道,因为它们表示空字段。
并且其他字段在字段值内也有不应更改的逗号。
我尝试使用下面的方法,但不起作用。
sed -e 's/,{1,\}/|{1,\}/g' filenm.csv > filenm.txt
在记事本中打开的示例 csv 文件:
"ID","Name","DOB","Age","Address","City","State","Country","Phone number"
"123","ABC","12/20/2020","15","No.38,3rd st, RRR NNN, TRT",,,,"9999999999"
"456","DEF","12/20/2020",,,,,"test-country","9999999999"
"465","XYZ",,,"No.38,3rd st, RRR NNN, TRT",,,,"9999999999"
我希望这有助于重现问题并解决。
提前谢谢....
【问题讨论】:
-
可以发一下原文件吗?
-
当然,我已经添加了示例文件。希望这可以帮助!谢谢
-
@WiktorStribiżew perl 命令完美运行,但有一个小问题 - 当字段中有 0 时,它会跳过该字段,并且字段内容会移动一个字段......即当文件看起来像这样时:
"ID","Name","DOB","Age","Address","City","State","Country","Phone number" "123","ABC","12/20/2020","0","No.38,3rd st, RRR NNN, TRT",,,,"9999999999"您提供的 perl cmd 提供了以下结果:ID|Name|DOB|Age|Address|City|State|Country|Phone number 123|ABC|12/20/2020|||No.38,3rd st, RRR NNN, TRT||||9999999999请将此示例导入 Excel 以获取良好参考。 -
是的,我只是在尝试和分析问题......
-
没有我放的是Unix输出