2
我試圖使用grep在關鍵字後面打印所有內容,但該命令返回整行。 IM使用下列內容:grep正則表達式返回全行
grep -P (\skeyword\s)(.*)
爲例行是:
abcdefg keyword hello, how are you.
的結果應該是hello, how are you
,而是它給全行。我在這裏做錯了什麼?
我試圖使用grep在關鍵字後面打印所有內容,但該命令返回整行。 IM使用下列內容:grep正則表達式返回全行
grep -P (\skeyword\s)(.*)
爲例行是:
abcdefg keyword hello, how are you.
的結果應該是hello, how are you
,而是它給全行。我在這裏做錯了什麼?
您需要使用-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.
默認情況下,Grep打印匹配的行。要僅打印匹配的表達式,請嘗試'-o'選項。