Frage Grep für ein Wort in einer Datei und zeigen unter und über Zeilen auch? [Duplikat]


Mögliche Duplikate:
Wie grep 2 oder 3 Zeilen, eine mit dem Text, den ich will, und die anderen direkt darunter? 

Sag, ich habe eine Datei. Ich möchte ein bestimmtes Wort in dieser Datei finden und die Zeile anzeigen.

Gibt es eine Möglichkeit, das obige zu tun, aber auch die obigen und unter 10 Zeilen von der Ergebniszeile einzuschließen?

Wie würde ich dies mit der Linux-Befehlszeile tun?


4
2018-05-20 12:17


Ursprung




Antworten:


Angenommen, Ihre Datei wird aufgerufen filename, ist dein regulärer Ausdruck foo, und Sie möchten übereinstimmende Linien und Linien innerhalb von 10 Zeilen (oben und unten) übereinstimmenden Linien drucken:

grep -C10 foo Dateiname

Allgemeiner, für n Zeilen vor und nach den Spielen:

grep -Cn foo Dateiname

Diese Lösung wird mit GNU Grep funktionieren (was Ubuntu und fast jedes andere Linux-basierte Betriebssystem hat). Das -C Flag wird nicht unbedingt in allen unterstützt grep Implementierungen, obwohl.

Um Linien zu drucken nur vor oder nur nach Spielen, benutze die -Bn oder -An schaltet jeweils, wo n ist die Anzahl der gewünschten Zeilen davor oder danach. Weitere Informationen zu einer alternativen Vorgehensweise finden Sie unter diese verwandte Frage (großes Lob an fossilienfreiheit um die Ähnlichkeit zu bemerken).


4
2018-05-20 13:21