ricerca grep + riga successiva


18

Con il grepcomando, ho trovato il testo di cui ho bisogno come segue:

grep 'C02' ~/temp/log.txt Ora, ovunque trovo la stringa desiderata, vorrei stampare la linea seguendo la stringa trovata.

Ad esempio, supponiamo che il testo desiderato sia 'abc', e abc si trova sulla riga 12, vorrei stampare anche la riga 13.


3
grep -A1 'abc' ~/temp/log.txtper 1 riga di contesto A prima della partita - vedere la Context Line Controlsottosezione del manuale ( man grep)
steeldriver

1
gnu grep lo rende facile; posix non specifica il flag -A
Jeff Schaller

1
ciao e benvenuto su Stack Exchange! su SE, si prevede che tu faccia qualche ricerca di base prima di venire qui per chiedere aiuto. ad esempio, una ricerca di "grep show next line" ha restituito una risposta indiretta nel primo risultato e una risposta diretta nel secondo. cosa hai fatto per provare a risolvere questo problema già?
strugee,

Risposte:


25

Se stai utilizzando il sistema Linux, puoi provare:

grep -A1 "C02" ~/temp/log.txt


OPTIONS
       -A NUM, --after-context=NUM
              Print NUM lines of trailing context after matching lines.  Places a line containing -- between contiguous groups of matches.
       -B NUM, --before-context=NUM
              Print NUM lines of leading context before matching lines.  Places a line containing -- between contiguous groups of matches.
       -C NUM, --context=NUM
              Print NUM lines of output context.  Places a line containing -- between contiguous groups of matches.

Puoi usare awk anche come:

awk '/C02/{print;getline;print}' ~/temp/log.txt

1
inoltre,sed -n '/C02/{N; p}' ~/temp/log.txt
Sundeep
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.