我试图使用grep打印关键字后的所有内容,但命令返回整行.我使用以下内容:
grep -P (\skeyword\s)(.*)
Run Code Online (Sandbox Code Playgroud)
示例行是:
abcdefg keyword hello, how are you.
Run Code Online (Sandbox Code Playgroud)
结果应该是,hello, how are you但它给出了整行.我在这里做错了吗?
您需要使用-o(仅匹配)参数和\K(丢弃先前匹配的字符)或正面的lookbehind.
grep -oP '\skeyword\s+\K.*' file
Run Code Online (Sandbox Code Playgroud)
\K保持文本匹配到目前为止整个正则表达式匹配.\s+匹配一个或多个空格字符.
例:
$ echo 'abcdefg keyword hello, how are you.' | grep -oP '\skeyword\s+\K.*'
hello, how are you.
Run Code Online (Sandbox Code Playgroud)