2

N如果th 字段中包含字符串,那么在 bash 中执行快速单行以从制表符分隔的文件中过滤掉所有行的最佳方法是s什么?例子:

$ cat myfile 
A  B_crop  C
A  X_mock  D

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

made up 命令filter接受一个列号(从 1 开始)-c、一个字符串-s,并且只保留给定列中包含该字符串的行。如果它被传递-V然后 like grep,它会排除没有字符串的行是该列号中的子字符串。谢谢。

4

1 回答 1

3

由于您想要基于列的排除,我会使用awk

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

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

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

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

正则表达式匹配也可以用!~.

于 2013-03-03T21:10:20.167 回答