2013-05-02 64 views
2

假设我有一些包含KEYWORD的几行文档和一些PREFIX_KEYWORD的行。如何匹配PATTERN但不匹配PREFIX_PATTERN?

我该如何只匹配这些具有KEYWORD的行,并忽略其上有PREFIX_KEYWORD的行?

是的,我可以grep为KEYWORD,将结果输入到我选择的编辑器中,并让编辑器删除所有有PREFIX_KEYWORD的行,但是我在问grep中是否有内置的方法来执行此操作。

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

+3

你有没有考虑过'grep KEYWORD | grep -v^PREFIX_KEYWORD'? – fedorqui 2013-05-02 09:43:17

回答

3

一个办法是到grep您的关键字并筛选出的其余部分。这可能看起来像

grep KEYWORD file | grep -v PREFIX_KEYWORD 

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

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

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

+0

不知道'-v'开关。工作正常。谢谢。 – eckes 2013-05-03 06:12:22

1

试试这个:

grep -w KEYWORD your_file 

-w手册页说:

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

如果您本身所需要的单词KEYWORD,何不的正则表达式KEYWORD与之前的任何特殊字符(空格,换行符等)?

相关问题