Grep-Ergebnisse in Textdatei ausgeben, sauberere Ausgabe benötigen


83

Wie speichere ich die Ergebnisse in einer Textdatei, wenn ich den Befehl Grep verwende, um eine Suchzeichenfolge in einer Reihe von Dateien zu finden?

Gibt es auch einen Schalter für den Befehl Grep, der sauberere Ergebnisse für eine bessere Lesbarkeit liefert, z. B. einen Zeilenvorschub zwischen den einzelnen Einträgen oder eine Möglichkeit, Dateinamen und Suchergebnisse zu rechtfertigen?

Zum Beispiel eine Abwesenheit zu ändern ...

./file/path: first result
./another/file/path: second result
./a/third/file/path/here: third result

zu

./file/path: first result

./another/file/path: second result

./a/third/file/path/here: third result

14
Ich finde es toll, dass diese wirklich super hilfreichen Fragen "keine echte Frage" Jahre später in den Top-Suchergebnissen von Google gelandet sind.
Adrian Carr

Antworten:


110
grep -n "YOUR SEARCH STRING" * > output-file

Das -ndruckt die Zeilennummer und >leitet grep-Ergebnisse in die Ausgabedatei um.
Wenn Sie die Ergebnisse "bereinigen" möchten, können Sie sie beispielsweise mit Pipe filtern |: Sie
grep -n "test" * | grep -v "mytest" > output-file stimmen mit allen Zeilen überein, die die Zeichenfolge "test" haben, mit Ausnahme der Zeilen, die mit der Zeichenfolge "mytest" übereinstimmen (das ist der Schalter -v) - und leiten die um Ergebnis zu einer Ausgabedatei.
Ein paar gute Grep-Tipps finden Sie in diesem Beitrag


10
Schreibt grep nur, wenn es fertig ist, oder schreibt es Zeile für Zeile, während es den Inhalt verarbeitet? Vielen Dank!
Crista23

5
@alfasin - überschreibt das einzelne '>' nicht die Ergebnisse in der Ausgabedatei? Sollten wir nicht double '>>' verwenden, um die Ergebnisse an die Datei anzuhängen?
GTodorov

3
@ GTodorov ja, wenn Sie die Verwendung anhängen möchten>>
Nir Alfasi

12
Für zukünftige Besucher ist die Antwort auf die Frage von @ Crista23, dass sie schreibt, wenn der
Grep

35

Die Umleitung der Programmausgabe erfolgt durch die Shell.

grep ... > output.txt

grepEs gibt keinen Mechanismus zum Hinzufügen von Leerzeilen zwischen den einzelnen Übereinstimmungen, es werden jedoch Optionen wie der Kontext um die übereinstimmende Zeile und die Färbung der Übereinstimmung selbst bereitgestellt. Weitere grep(1)Informationen, insbesondere die Optionen -Cund, finden Sie in der Manpage --color.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.