删除csv中用引号括起来的特定列

时间:2017-12-11 10:46:14

标签: csv unix awk sed

我有一个包含

的csv文件
a,b,c,d,e,f,"gg,hh,ii",j,k

我一直在尝试使用像

这样的东西
awk -F ',' '{print $7}'

我得到了

"gg

但我需要结果

gg,hh,ii

我可以使用简单的单行awk或sed命令完成它而不需要任何解析器

请帮助

2 个答案:

答案 0 :(得分:1)

Perl救援!

  <supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:requiresSmallestWidthDp="600"
    android:smallScreens="true"
    android:xlargeScreens="true" />

有关详细信息,请参阅Text::CSV_XSperl -MText::CSV_XS=csv -we 'csv(in => shift, fragment => "col=7")' -- file.csv 选项告诉fragment函数只输出第7列。

答案 1 :(得分:0)

您可以使用:

awk -vFPAT='[^,]*|"[^"]*"' '{print $7}' file.csv

使用FPAT定义字段内容,而不是定义字段分隔符FS-F选项)。

对于awk手册页:

  

FPAT:描述记录中字段内容的正则表达式。设置时,gawk将输入解析为字段,其中字段与正则表达式匹配,而不是使用FS变量的值作为字段分隔符。