我如何匹配PATTERN但不匹配PREFIX_PATTERN?

时间:2013-05-02 09:41:21

标签: regex grep

假设我有一些文档包含多行KEYWORD和一些行PREFIX_KEYWORD

我如何仅匹配KEYWORD这些行并忽略其上有PREFIX_KEYWORD的行?

是的,我可以grep KEYWORD,将结果提供给我选择的编辑器,让编辑器删除所有PREFIX_KEYWORD的行,但我要问是否有内置方式在grep中这样做。

如果这有帮助:我对完全匹配不感兴趣,但只想知道文件中是否出现KEYWORD

3 个答案:

答案 0 :(得分:3)

一种方法是grep你的KEYWORD并过滤掉其余的。这可能看起来像

grep KEYWORD file | grep -v PREFIX_KEYWORD

使用perl表达式的另一种方法:

grep -P '(?<!PREFIX_)KEYWORD' file

这里给出了同样的答案:Regex to match specific strings without a given prefix

答案 1 :(得分:1)

试试这个:

grep -w KEYWORD your_file

-w的手册页说:

 -w    Searches for the expression as a word as if surrounded
       by \< and \>.

答案 2 :(得分:0)

如果您需要单词KEYWORD,为什么不在KEYWORD之前使用任何特殊字符的正则表达式(空格,换行符等)?