我正在尝试grep一个文件以确定匹配的匹配,但我也得到更长的虚假匹配:
grep CAT1717O99 myfile.txt -F -w
输出:
CAT1717O99
CAT1717O99.5
我想只输出第一个完全匹配的行。有没有办法摆脱第二线? 提前致谢。 阿图罗
这是文件' myfile.txt':
CAT1717O99
CAT1717O99.5
答案 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 仅选择包含构成整个单词的匹配项的行。测试是匹配的子字符串必须位于行的开头,或者前面是非单词构成字符。同样,它必须位于行的末尾或后跟非单词构成字符。单词构成字符是字母,数字和下划线。