提高精确值但打印整行

时间:2014-10-20 11:07:02

标签: grep pattern-matching

我有一个2列制表符分隔文件,我需要从中获取特定信息。 该文件如下所示:

wych_hazel    agt|plt
wytensin    agt
x    agt|com|qud
xanax    agt
xtc    agt
xylocaine    agt
yellow_jacket    agt|anm

我需要从第二列开始,这些行只有值agt

所需的输出是:

wytensin    agt
xanax    agt
xtc    agt
xylocaine    agt

我试过了:

grep -e 'agt' input

给了我:

wych_hazel    agt|plt
wytensin    agt
x    agt|com|qud
xanax    agt
xtc    agt
xylocaine    agt
yellow_jacket    agt|anm

然后我尝试过:

grep -oh 'agt' input

给了我:

agt
agt
agt
agt
agt
agt
agt

我应该引入哪些grep参数来达到我想要的结果?

3 个答案:

答案 0 :(得分:2)

这是awk的工作:只需告诉它查找第二个字段正好agt的那些行:

$ awk '$2=="agt"' file
wytensin    agt
xanax    agt
xtc    agt
xylocaine    agt

grep中,您还可以检查是否存在空格,然后检查agt周围的行尾:

grep '\sagt$' file

答案 1 :(得分:1)

使用单词边界和-E参数。

grep -E '^[^ ]+\s+.*\sagt$' file

答案 2 :(得分:1)

如果agt始终位于该行的末尾,那么您可以这样做:

grep agt$ input