grep 正则表达式 returns 整行

grep regular expression returns full line

我正在尝试使用 grep 打印关键字后的所有内容,但命令 returns 打印整行。我正在使用以下内容:

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

示例行是:

abcdefg         keyword   hello, how are you.

结果应该是 hello, how are you 但它给出了整行。我是不是做错了什么?

默认情况下,Grep 打印匹配的行。要仅打印匹配的表达式,请尝试“-o”选项。

你需要使用-o只匹配)参数和\K丢弃之前匹配的字符) 或积极的回顾。

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

\K 将到目前为止匹配的文本保留在整个正则表达式匹配之外。 \s+ 匹配一个或多个 space 个字符。

示例:

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