2015-02-06 119 views
2

我試圖使用grep在關鍵字後面打印所有內容,但該命令返回整行。 IM使用下列內容:grep正則表達式返回全行

grep -P (\skeyword\s)(.*) 

爲例行是:

abcdefg   keyword hello, how are you. 

的結果應該是hello, how are you,而是它給全行。我在這裏做錯了什麼?

回答

6

您需要使用-o僅匹配)參數和\K丟棄先前匹配的字符)或正回顧後。

grep -oP '\skeyword\s+\K.*' file 

\K使文本與整體正則表達式匹配保持一致。 \s+匹配一個或多個空格字符。

實施例:

$ echo 'abcdefg   keyword hello, how are you.' | grep -oP '\skeyword\s+\K.*' 
hello, how are you. 
2

默認情況下,Grep打印匹配的行。要僅打印匹配的表達式,請嘗試'-o'選項。