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'选项。