2011-09-11 12 views
12

grep il comando è davvero potente e io lo uso molto.comando grep like per trovare linee di corrispondenza più linee di quartiere

A volte ho la necessità di trovare qualcosa con grep cerca all'interno di molti molti file per trovare la stringa mi ricordo a malapena aiutandomi con -i opzione (caso ignorare), -r (ricorsiva) e anche - v (escluso).

Ma quello che ho davvero bisogno è di avere un'uscita speciale da grep che evidenziano la linea corrispondente (s) più le linee di quartiere (data la linea di corrispondenza mi piacerebbe vedere, diciamo, il 2 precedente e le 2 linee successive).

C'è un modo per ottenere questo risultato utilizzando bash?

+0

Nota a margine, quale sistema operativo è in esecuzione? Ad esempio, Solaris 10 ha un grep MOLTO limitato che non può farlo. – chotchki

risposta

11

maggior parte greps permettono la bandiera "contesto" che lo rende un po 'più leggibile:

grep --context=3 foo myfile.txt 
+0

fantastico, che era ancora più chiaro della prima risposta. Ed è esattamente quello che stavo cercando. @Gringo Suave, questa è la forma non contrattuale della tua opzione -C. – ztank1013

17

Grep si farà questo

grep -A 2 -B 2 foo myfile.txt 
+2

E non dimenticare '-C 2' che significa' -A 2 -B 2'. –

+0

Ha funzionato molto bene, grazie! e anche -C! – ztank1013

7

È possibile omettere -C

grep -2 foo myfile.txt 

è uguale a

grep -C 2 foo myfile.txt 
Problemi correlati