只返回正则表达式匹配,而不是整行

时间:2013-08-30 18:39:01

标签: regex sed grep

我有一个多行文档,我希望从中提取一个特定的关键字和之后的单词。它看起来像这样:

This is key word1 line 1.

This is line 2.

This is key word2 line 3. 

如果我使用egrep 'key [^s]+ ',则输出为:

This is key word1 line 1.

This is key word2 line 2. 

但是,我希望输出只是匹配而不是整行,即:

key word1

key word2

有办法吗?

1 个答案:

答案 0 :(得分:46)

grep(1)有一个-o标志,只输出该行的匹配部分。来自man page

  -o, --only-matching
      Show only the part of a matching line that matches PATTERN.

但是,您的模式并不适合获得您想要的输出。尝试:

$ egrep -o 'key \w+' file 
key word1
key word2