2013-08-30 12 views
11

Mam dokument wielowierszowy, z którego chcę wyodrębnić dane słowo kluczowe i słowo po nim. Wygląda to tak:Egrep/Sed: zwraca tylko dopasowanie do wyrażenia regularnego, a nie całą linię.

This is key word1 line 1. 

This is line 2. 

This is key word2 line 3. 

Jeśli używam egrep 'key [^s]+ ', wyjście jest:

This is key word1 line 1. 

This is key word2 line 2. 

Jednak chciałbym wyjście przeznaczone do meczu tylko w przeciwieństwie do całej linii, to jest:

key word1 

key word2 

Czy jest jakiś sposób na zrobienie tego? Wydaje się to być dość prostym zadaniem, ale w tym momencie waliłem głową w ścianę. Dzięki za pomoc!

+0

dokładną kopią (http://stackoverflow.com/questions/1546711/can-grep-show-only-words-that-match- wzór wyszukiwania) –

Odpowiedz

34

grep(1) ma flagę -o, która wyprowadza tylko pasującą część linii. Od man page:

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

Twój wzór nie jest w porządku, aby uzyskać żądany sposób wydruku, choć. Spróbuj: [? Czy grep Pokaż tylko słowa, które pasują do wzorca wyszukiwania]

$ egrep -o 'key \w+' file 
key word1 
key word2 
Powiązane problemy