当存在歧义时,使用grep从linux中的txt文件中提取文本

时间:2014-07-28 15:01:46

标签: linux bash awk grep

我有一个名为l.txt的文件,其中包含以下数据,名字和姓氏。当我传递第一个名字时,输出应该是姓氏。以下查询对我有用。

l.txt

name Tony Mcgill
name Jag John
name Jagmohan Singh

适用于名称tony。但当我搜索jag时,它给出了两个结果,John&辛格。但我只需要约翰。我怎样才能做到这一点。

grep -e '^'"name jag" l.txt | awk '{print $3}' 

我正在使用此命令。

2 个答案:

答案 0 :(得分:2)

您可以使用grep -w来匹配单词:

grep -iw 'tony' file
name Tony Mcgill

或者在grep中使用字边界:

grep -i '\<tony\>' file

OR:

grep -i '\btony\b' file

答案 1 :(得分:0)

您也可以在中执行所有操作:

awk '$2~/\<Jag\>/ {print $3}' l.txt