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.
我正在尝试使用 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.