2015-05-18 284 views
0

文件1:grep的精确匹配线

Btr_0449a 447 
Btr_0449 447 

所需的输出:

Btr_0449 447 

我想grep来查找 'Btr_0449',而不是 'Btr_0449a'。看来我做错了什么,因为:

grep -F "Btr_0449" 

Btr_0449a 447 
Btr_0449 447 
+0

'grep'^ Btr_0449 \ W''将在这里工作。 –

+0

[如何精确匹配grep]可能的重复(http://stackoverflow.com/questions/4709912/how-to-grep-the-exact-match) – fedorqui

回答

3

这应做到:

grep -Fw "Btr_0449" 

grep手册页:

“-W只选择那些含有形成全字匹配线。“

1

如果你坚持使用'-F'标志,那么在你的字符串后面会添加一个空格。

grep -F "Btr_0449 "

对于未来,你将得到更好的结果,如果你使用正则表达式的模式,因此,对于上面的查询,你可以这样做:

grep -e "Btr_0449\s"

...这将匹配你的字符串后跟任何空白字符(空格,制表符,换行符,回车...)