删除csv中带有引号的特定列

删除csv中带有引号的特定列,csv,unix,awk,sed,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命令完成它而不需要任何解析器吗 请帮助您可以使用: awk -vFPAT='[^,]*|"[^"]*"' '{print $7}' file.csv 使用FPAT定义字段内容,而不是使用-F选项定义字段分隔符FS 对于awk手册页: FPAT:描述记录中

我有一个csv文件包含

a,b,c,d,e,f,"gg,hh,ii",j,k
我一直在尝试使用类似

awk -F ',' '{print $7}'
我越来越

"gg
但我需要的是结果

gg,hh,ii
我能用一个简单的单行awk或sed命令完成它而不需要任何解析器吗

请帮助

您可以使用:

awk -vFPAT='[^,]*|"[^"]*"' '{print $7}' file.csv
使用FPAT定义字段内容,而不是使用-F选项定义字段分隔符FS

对于awk手册页:

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

救命啊

perl -MText::CSV_XS=csv -we 'csv(in => shift, fragment => "col=7")' -- file.csv

有关详细信息,请参阅。fragment选项告诉CSV函数只输出第7列。

如果值中还可以包含双引号和反斜杠,该怎么办?a、 b,c,d,e \,fit不起作用..我只得到一个空行作为输出..@oliv在@INC@INC contains:/usr/local/lib64/perl5/usr/local/share/perl5/usr/lib64/perl5/vendor\u perl/usr/share/perl5/vendor\u perl/usr/libr/lib64/perl5/perl中找不到Text/CSV_XS.pm。。BEGIN编译失败,已中止。@请参阅以备将来参考:关于Aks unix的问题。例如,回答你的问题。echo'a,b,c,d,e,f,gg,hh,ii,j,k'| awk-f\{print$2}'sed的/[^]*\[^]*.*/\1/'我在某处读到了这个……我可以修改它以单独删除某一列吗?@Ajit你能澄清你的问题吗?标题表示删除列,而预期输出显示提取特定列的/[^]*/;s/*/'适用于给定的示例,但可能不适用于实际用例。。您可能需要添加更多示例