删除与Unix / bash中的列条件匹配的行

时间:2013-03-03 21:02:32

标签: python unix subprocess pipe

如果N字段中包含字符串s,bash中最好的方法是使用快速单行过滤掉制表符分隔文件中的所有行?例如:

$ cat myfile 
A  B_crop  C
A  X_mock  D

$ cat myfile | filter -V -c 2 -s "crop"
A  X_mock  D

组合命令filter采用列号(从1开始)-c,字符串-s,并且只保留给定列中包含字符串的行。如果它传递-V然后像grep那样,它会排除没有字符串的行是该列号中的子字符串。感谢。

1 个答案:

答案 0 :(得分:2)

由于您希望根据列进行排除,我会使用awk

awk '$2 == "crop" { print $0 }' myfile

$2表示使用第2列进行比较。要实施-V功能,请使用!=而不是==

您还可以使用正则表达式检查来检查子字符串:

awk '$2 ~ /crop/ { print $0 }' myfile

正则表达式匹配也可以用!~否定。