user735276
user735276

Reputation: 357

Return only the regex match, not the whole line

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?

Upvotes: 28

Views: 46015

Answers (1)

Carl Norum
Carl Norum

Reputation: 225212

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

Upvotes: 67

Related Questions