如何使用awk打印第三列值等于“0”而不是0的所有行?

时间:2014-08-20 22:16:26

标签: linux unix awk

我的csv文件格式如下:

"hWcYw",1,"1","5HleiJXMsFkGEsr8Jqr3Ug",1
"hWcYw",1,"1","rCDlYd2WHJuiT05sYGxaVA",2
"m1oKE",1,"0","5HleiJXMsFkGEsr8Jqr3Ug",1
"1oKE0",1,"0","rCDlYd2WHJuiT05sYGxaVA",2

我想得到第三列值为“0”的行,注意它是“0”,引号不是0。

我试过

awk '$3 == 0' file.csv
awk '$3 == "0"' file.csv

但不起作用。有任何想法吗?提前

2 个答案:

答案 0 :(得分:3)

试试这个:

awk -F"," '$3 == "\"0\""' file.csv

如果没有指定FS(字段分隔符),awk默认使用空格,因此您尝试的第一个问题是您只有一个字段。在这里,我使用-F","从命令行指定FS值。其次,你只需要转义双引号,因为双引号可用于为模式匹配制作有效的awk正则表达式字符串。

你也可以使用不同的格式进行模式匹配,你不需要转义你想要匹配的双引号:

awk -F"," '$3 ~ /"0"/' file.csv

答案 1 :(得分:-1)

perl版本:

$ perl -F, -lane   'print $_ if $F[2]=~/^"0"/' example.txt
"m1oKE",1,"0","5HleiJXMsFkGEsr8Jqr3Ug",1
"1oKE0",1,"0","rCDlYd2WHJuiT05sYGxaVA",2