2017-02-25 131 views
0

我想用grep了比赛的确切发生的一个文件,但我得到的也更长虚假匹配:只得到grep的精确匹配

grep CAT1717O99 myfile.txt -F -w 

输出:

CAT1717O99 

CAT1717O99.5 

我想只输出第一恰好匹配线。有什么办法摆脱第二线? 在此先感谢。 阿图罗

这是文件 'myfile.txt的':

CAT1717O99 

CAT1717O99.5 
+0

可以显示'myfile.txt'的片段? – RomanPerekhrest

回答

0

这将做的工作适合你。

grep -Fx "CAT1717O99" textfile 

-F固定 -x意味着精确

+0

谢谢,但不起作用。我仍然得到虚假的匹配线。 – Arturo

+0

谢谢。那就是诀窍。 – Arturo

+0

如果它为你做的工作为例外,则笑纳了答案,帮助同胞,因此用户。 –

1

使用Perl兼容的正则表达式的功率PCRE)和查询的匹配到给定的图案:

grep -Po "\bCAT1717O99(\s|$)" myfile.txt 

(\s|$) - 替代烷基,可确保如果它随后由空格或放置在升的端部匹配的子串CAT1717O99 INE

-P选项,允许正则表达式

-o选项,只打印匹配匹配行

0

的部分,你需要明确要求的空间,以忽略特殊字符。

grep -E '(^|)CAT1717O99(|$)' myFile.txt 

从grep的手册:

-w,--word-regexp的 仅选择那些含有形成完整的词的匹配线。测试是匹配子字符串必须位于行首,或者以非单词组成字符开头。同样,它必须位于行尾,或者后面跟着一个非单词组成字符。单词组成字符是字母,数字和下划线。