2013-05-02 80 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與之前的任何特殊字符(空格,換行符等)?