grep Suche + nächste Zeile

17

Mit dem grepBefehl habe ich den benötigten Text wie folgt gefunden:

grep 'C02' ~/temp/log.txt Jetzt möchte ich, wo immer ich die gewünschte Zeichenfolge finde, die Zeile drucken, die der gefundenen Zeichenfolge folgt.

Nehmen wir zum Beispiel an, der gewünschte Text ist 'abc' und in Zeile 12 steht abc. Ich möchte auch Zeile 13 drucken.

Mah
quelle
3
grep -A1 'abc' ~/temp/log.txtfür 1 Zeile Kontext A fter dem Spiel - siehe den Context Line ControlAbschnitt des Handbuchs ( man grep)
steeldriver
1
gnu grep macht es einfach; posix gibt die -A-Flagge nicht an
Jeff Schaller
1
Hallo und herzlich willkommen bei Stack Exchange! Bei SE wird erwartet, dass Sie Grundlagenforschung betreiben, bevor Sie hierher kommen, um Hilfe zu erhalten. Beispielsweise ergab eine Suche nach "grep show next line" im ersten Ergebnis eine indirekte Antwort und im zweiten eine direkte Antwort. Was haben Sie getan, um dieses Problem bereits zu lösen?
Strugee

Antworten:

24

Wenn Sie ein Linux-System verwenden, können Sie Folgendes versuchen:

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.

Sie können awk auch als:

awk '/C02/{print;getline;print}' ~/temp/log.txt
Kamaraj
quelle
1
auchsed -n '/C02/{N; p}' ~/temp/log.txt
Sundeep