只获得grep完全匹配

时间:2017-02-25 09:32:35

标签: grep

我正在尝试grep一个文件以确定匹配的匹配,但我也得到更长的虚假匹配:

grep CAT1717O99 myfile.txt  -F -w

输出:

CAT1717O99

CAT1717O99.5

我想只输出第一个完全匹配的行。有没有办法摆脱第二线? 提前致谢。 阿图罗

这是文件' myfile.txt':

CAT1717O99

CAT1717O99.5

3 个答案:

答案 0 :(得分:1)

这将为您完成工作。

grep -Fx "CAT1717O99" textfile

-F表示固定 -x表示确切

答案 1 :(得分:1)

使用 Perl兼容的正则表达式 PCRE )的强大功能,并将匹配项搜索到给定的模式:

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

(\s|$) - 替代组,确保匹配子字符串CAT1717O99,如果它后跟空格或放在行尾

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

-o选项,仅打印匹配行的匹配部分

答案 2 :(得分:0)

您需要明确请求空格才能忽略特殊字符。

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

来自grep manual:

  

-w, - word-regexp   仅选择包含构成整个单词的匹配项的行。测试是匹配的子字符串必须位于行的开头,或者前面是非单词构成字符。同样,它必须位于行的末尾或后跟非单词构成字符。单词构成字符是字母,数字和下划线。