示例'null.csv'文件包含
71131940,2015-05-01, “珠宝,ITEM”,P ,,W¯¯
我有一个.csv文件,我想在其中处理逗号(,)和空值(,,),这样当我使用(,)分割文件的每一行时,它会忽略双引号中的逗号而不是给出如下所示的输出。
71131940,2015-05-01,珠宝,ITEM,P ,,W¯¯
我通过使用sed命令
替换为(,0)来处理空值,即(,,)sed -i -e“s / ,, /,0,/ g”null.csv
并获得类似
的输出71131940,2015-05-01,JEWELLERY,ITEM,P,0,W
但问题是,在这里我不想将“JEWELLERY,ITEM”拆分成 JEWELLERY,ITEM。
任何形式的帮助都将受到赞赏。
答案 0 :(得分:3)
我确信这已被提出并被回答了一百万次,但无论如何,输入的格式与您所显示的一样简单(例如引号内没有引号或换行符):
$ awk -v FPAT='[^,]*|"[^"]*"' '{for (i=1;i<=NF;i++) print i, $i}' file
1 71131940
2 2015-05-01
3 "JEWELLERY,ITEM"
4 P
5
6 W
以上使用FPAT
的GNU awk(参见https://www.gnu.org/software/gawk/manual/gawk.html#Splitting-By-Content)。