26

I have a multiline document from which I'm looking to extract a particular keyword and the word after that. It looks like this:

This is key word1 line 1.

This is line 2.

This is key word2 line 3. 

If I use egrep 'key [^s]+ ', the output is:

This is key word1 line 1.

This is key word2 line 2. 

However, I'd like the output to be the match only as opposed to the whole line, that is:

key word1

key word2

Is there a way to do that?

codeforester
  • 39,467
  • 16
  • 112
  • 140
user735276
  • 337
  • 1
  • 3
  • 5
  • 3
    Exact duplicate of [Can grep show only words that match search pattern?](http://stackoverflow.com/questions/1546711/can-grep-show-only-words-that-match-search-pattern) – Dan Dascalescu Apr 17 '14 at 03:31

1 Answers1

64

grep(1) has a -o flag that outputs only the matching part of the line. From the man page:

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

Your pattern isn't right to get the output you want, though. Try:

$ egrep -o 'key \w+' file 
key word1
key word2
Benjamin W.
  • 46,058
  • 19
  • 106
  • 116
Carl Norum
  • 219,201
  • 40
  • 422
  • 469