GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So führen Sie eine Mustersuche in Dateien mit Grep durch

In unserem ersten Artikel über den grep-Befehl haben wir einige Funktionen behandelt, die das Tool bietet, darunter, wie Sie es verwenden können, um nur nach Wörtern zu suchen, nach zwei Wörtern zu suchen, Zeilen mit übereinstimmenden Wörtern zu zählen und mehr. Abgesehen davon bietet das Tool einige weitere leicht verständliche und nützliche Funktionen. In diesem Artikel werden wir einige davon besprechen.

Bitte beachten Sie, dass alle in diesem Tutorial erwähnten Beispiele auf Ubuntu 14.04LTS getestet wurden. Außerdem werden wir die folgende Datei (test_file1.txt) für alle unsere grep-bezogenen Beispiele in diesem Tutorial verwenden:

Suche ohne Berücksichtigung der Groß-/Kleinschreibung mit Grep

Standardmäßig unterscheidet grep zwischen Groß- und Kleinschreibung, was bedeutet, dass es beispielsweise „ABC“ und „abc“ getrennt behandelt. Wenn Sie jedoch möchten, dass bei Ihrer Suche die Groß-/Kleinschreibung nicht beachtet wird, können Sie das -i verwenden Befehlszeilenoption.

grep -i [string-to-be-searched] [filename]

Zum Beispiel:

grep -i "linux" test_file1.txt

Hinweis :Nicht nur Muster (z. B. „linux“ im obigen Beispiel), die grep-Manpage sagt, dass die Option „-i“ auch dafür sorgt, dass die Groß-/Kleinschreibung für Eingabedateien ebenfalls ignoriert wird. Hier ist der Auszug:

 -i, --ignore-case
Ignore case distinctions in both the PATTERN and the input files. (-i is specified by POSIX.)

Wir konnten jedoch das Verhalten im Zusammenhang mit Eingabedateien auf unserer Seite nicht reproduzieren.

Zeige bestimmte nicht übereinstimmende Zeilen mit Zeilen, die übereinstimmende Zeichenfolgen in Grep enthalten

Mit dem Tool können Sie auch eine bestimmte Anzahl von Zeilen nach, vor oder um die Zeile mit dem übereinstimmenden String anzeigen.

Verwenden Sie das -A Befehlszeilenoption zum Drucken von 'N' Zeilen nach der übereinstimmenden Zeile.

$ grep -A N [string-to-be-searched] [filename]

Zum Beispiel:

$ grep -A 2 "linux" test_file1.txt

Hier ist die Ausgabe des obigen Befehls

In ähnlicher Weise wird die Befehlszeilenoption -B verwendet, um Zeilen vor der übereinstimmenden Zeile anzuzeigen.

$ grep -B N [string-to-be-searched] [filename]

Zum Beispiel:

$ grep -B 2 "linux" test_file1.txt

Hier ist die Ausgabe:

Verwenden Sie schließlich die Befehlszeilenoption -C, um Zeilen um die übereinstimmende Zeile herum auszugeben.

$ grep -C N [string-to-be-searched] [filename]

Zum Beispiel:

$ grep -C 2 "linux" test_file1.txt

Hier ist die erfasste Ausgabe:

Nur übereinstimmende Strings in Grep drucken

Sie dürfen auch nur die übereinstimmende Zeichenfolge auf der Standardausgabe ausgeben (anstelle von vollständigen Zeilen, die standardmäßig angezeigt werden). Auf diese Funktion kann mit der Befehlszeilenoption -o zugegriffen werden.

$ grep -o [string-to-be-searched] [filename]

Wenn beispielsweise eine Zeichenfolge „linux“ in einer Datei gesucht werden soll (aber keine vollständigen Zeilen gedruckt werden sollen), verwenden wir den folgenden Befehl.

$ grep -o "linux" [file-name]

Wir können auch Platzhalterzeichen wie * und .* verwenden, um mehr als eine Zeichenfolge zu erfassen. Wenn wir beispielsweise eine Gruppe von Wörtern suchen möchten, die mit „how“ beginnen und mit „linux“ enden, können wir den folgenden Befehl verwenden.

$ grep -o “how.*linux” [file-name]

Position in Grep anzeigen

Mit dem Befehl grep können Sie auch den Byte-Offset der Zeile anzeigen, in der der übereinstimmende String vorkommt. Auf diese Funktion kann mit der Befehlszeilenoption -b zugegriffen werden. Aber zur besseren Verwendung dieser Option können Sie sie mit der Befehlszeilenoption -o verwenden, die die genaue Position der übereinstimmenden Zeichenfolge anzeigt.

$ grep -o -b [string-to-be-searched] [filename]

Zum Beispiel:

$ grep -o -b "for" test_file1.txt

Hier ist die Ausgabe:

Schlussfolgerung

Möglicherweise benötigen Sie nicht alle diese Optionen jeden Tag, aber Sie sollten sie zumindest kennen, da Sie nie wissen, wann sie nützlich sein könnten. Grep wird noch leistungsfähiger, wenn es mit regulären Ausdrücken verwendet wird, aber wir werden dieses Thema für einen anderen Tag aufheben.


Linux
  1. So vergleichen Sie drei Dateien in Linux mit dem diff3-Tool

  2. Verwenden von Sed zum Suchen und Ersetzen einer Linie zwischen Musterbereichen

  3. Wie erhalte ich eine Anzahl von Dateien in einem Verzeichnis über die Befehlszeile?

  4. So finden Sie bestimmten Text mit GREP unter Linux

  5. Verwenden Sie grep, um rückwärts zu suchen

So schließen Sie in Grep aus

So entfernen Sie Dateien und Verzeichnisse mit der Linux-Befehlszeile

So benennen Sie Dateien über die Befehlszeile in Linux um

So suchen Sie nach Dateien über die Linux-Befehlszeile

So führen Sie eine Grep-Suche für alle Dateien und in allen Verzeichnissen durch

So laden Sie Dateien in Rocky Linux 8 über die Befehlszeile mit wget herunter