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 in README.txt.
    • Zeigt 3 Zeilen an, die vor jedem Vorkommen von foo stehen.
    • Zeigt 2 Zeilen nach jedem Vorkommen an.

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 in README.txt.
    • Zeigt 3 Zeilen vor und nach jedem Vorkommen von foo an.

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!