2013-08-30 13 views
11

Ho un documento multilinea da cui sto cercando di estrarre una particolare parola chiave e la parola dopo. Ecco come si presenta:Egrep/Sed: restituisce solo la corrispondenza regolare, non l'intera riga

This is key word1 line 1. 

This is line 2. 

This is key word2 line 3. 

Se uso egrep 'key [^s]+ ', l'output è:

This is key word1 line 1. 

This is key word2 line 2. 

Tuttavia mi piacerebbe l'uscita di essere l'unica partita in contrasto con l'intera linea, vale a dire:

key word1 

key word2 

C'è un modo per farlo? Sembra un compito abbastanza semplice ma ho sbattuto la testa contro il muro a questo. Grazie per l'aiuto!

+0

duplicato esatto (http://stackoverflow.com/questions/1546711/can-grep-show-only-words-that-match- Ricerca-pattern) –

risposta

34

grep(1) ha un flag -o che emette solo la parte corrispondente della linea. Dal man page:

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

il vostro modello non è giusto per ottenere il risultato desiderato, però. Prova: [? Può grep mostrano solo le parole che corrispondono alla ricerca del modello]

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