grep正则表达式返回实线

时间:2015-02-06 13:16:22

标签: regex grep

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

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

示例行是:

abcdefg         keyword   hello, how are you.

结果应该是hello, how are you,而是它给出了整行。我在这里做错了吗?

2 个答案:

答案 0 :(得分:6)

您需要使用-o仅匹配)参数和\K丢弃以前匹配的字符)或正面的背后隐藏。< / p>

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

\K使文本与整个正则表达式匹配保持匹配。 \s+匹配一个或多个空格字符。

示例:

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

答案 1 :(得分:2)

默认情况下,Grep会打印匹配的行。要仅打印匹配的表达式,请尝试&#39; -o&#39;选项。