Wie man grep
verwendet, um Zeilen um jede Übereinstimmung anzuzeigen?
Wenn es darum geht, Dateien in einem Linux- oder Unix-ähnlichen Betriebssystem zu durchsuchen, ist grep
ein unverzichtbares Befehlszeilenwerkzeug. Manchmal benötigen Sie jedoch mehr als nur die übereinstimmenden Zeilen; Sie möchten den Kontext um diese Übereinstimmungen sehen. Dieser Blogbeitrag zeigt Ihnen, wie Sie die vorhergehenden und nachfolgenden Zeilen um jede übereinstimmende Zeile mit grep
anzeigen.
Das Problem
Sie haben eine Datei und möchten nach bestimmten Begriffen oder Mustern suchen. Einfach nur diese Übereinstimmungen zu finden, reicht nicht aus – Sie möchten auch die Zeilen sehen, die vor und nach den übereinstimmenden Zeilen erscheinen. Wenn Sie beispielsweise eine Protokolldatei auf bestimmte Fehlermeldungen überwachen, kann der Kontext um diese Fehler ebenso wichtig sein.
Die Lösung
Verwendung der Optionen -B
und -A
In grep
können Sie die Flags -B
und -A
verwenden, um zu steuern, wie viele Zeilen vor und nach jeder Übereinstimmung Sie sehen möchten:
-B num
: Diese Option gibt die Anzahl der Zeilen an, die vor der übereinstimmenden Zeile angezeigt werden sollen.-A num
: Diese Option gibt die Anzahl der Zeilen an, die nach der übereinstimmenden Zeile angezeigt werden sollen.
Beispielbefehl
Um dies zu veranschaulichen, nehmen wir an, Sie möchten Vorkommen des Begriffs foo
in einer Datei mit dem Namen README.txt
finden und möchten 3 Zeilen vor und 2 Zeilen nach jeder Übereinstimmung sehen. So würden Sie Ihren Befehl strukturieren:
grep -B 3 -A 2 foo README.txt
- Was dieser Befehl macht:
- Er sucht nach dem Schlüsselwort
foo
inREADME.txt
. - Zeigt 3 Zeilen an, die vor jedem Vorkommen von
foo
stehen. - Zeigt 2 Zeilen nach jedem Vorkommen an.
- Er sucht nach dem Schlüsselwort
Verwendung der Option -C
Wenn Sie die gleiche Anzahl von Zeilen vor und nach jeder Übereinstimmung anzeigen möchten, hat grep
auch eine praktische Option dafür:
-C num
: Diese Option ermöglicht es Ihnen anzugeben, wie viele Zeilen sowohl vor als auch nach der übereinstimmenden Zeile angezeigt werden sollen.
Beispielbefehl
Um 3 Zeilen sowohl vor als auch nach jeder Übereinstimmung von foo
anzuzeigen, verwenden Sie den folgenden Befehl:
grep -C 3 foo README.txt
- Was dieser Befehl macht:
- Sucht nach
foo
inREADME.txt
. - Zeigt 3 Zeilen vor und nach jedem Vorkommen von
foo
an.
- Sucht nach
Fazit
Die effektive Verwendung der Optionen -B
, -A
und -C
ermöglicht es Ihnen, bedeutungsvollen Kontext aus Ihren Suchen zu extrahieren. Ob Sie Probleme in Protokollen beheben oder einfach eine Textdatei analysieren, die Möglichkeit, die Zeilen um Ihre Übereinstimmungen herum zu sehen, bietet wertvolle Einblicke.
Jetzt, da Sie wissen, wie Sie mit grep
Übereinstimmungen mit umgebenden Zeilen finden, probieren Sie es bei Ihrer nächsten Dateisuche aus!