23

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
  • 34,080
  • 14
  • 96
  • 122
user735276
  • 307
  • 1
  • 2
  • 5
  • 2
    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

59

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.
  • 38,596
  • 16
  • 96
  • 104
Carl Norum
  • 210,715
  • 34
  • 410
  • 462