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

Wie man nach mehreren Zeichenfolgen, Mustern oder Wörtern sucht

Einführung

Grep ist ein leistungsstarkes Dienstprogramm, das standardmäßig auf UNIX-basierten Systemen verfügbar ist. Der Name steht für Global Regular Expression Print.

Durch die Verwendung von grep Befehl können Sie anpassen, wie das Tool in diesem Fall nach einem Muster oder mehreren Mustern sucht. Sie können mehrere Zeichenfolgen in verschiedenen Dateien und Verzeichnissen grep. Das Tool druckt alle Zeilen, die die Wörter enthalten, die Sie als Suchmuster angeben.

In dieser Anleitung zeigen wir Ihnen, wie Sie mit grep nach mehreren Wörtern oder Zeichenfolgenmustern suchen . Folgen Sie den Beispielen in diesem Tutorial, um zu erfahren, wie Sie grep am effektivsten verwenden.

Voraussetzungen

  • Linux- oder UNIX-ähnliches System
  • Zugriff auf ein Terminal oder eine Befehlszeile
  • Ein Benutzer mit Berechtigungen zum Zugriff auf die erforderlichen Dateien und Verzeichnisse

Wie man mehrere Muster grep – Syntax

Die grundlegende grep-Syntax beim Durchsuchen mehrerer Muster in einer Datei umfasst die Verwendung von grep Befehl gefolgt von Zeichenfolgen und dem Namen der Datei oder ihrem Pfad.

Die Muster müssen in einfache Anführungszeichen eingeschlossen und durch das Pipe-Symbol getrennt werden. Verwenden Sie den umgekehrten Schrägstrich vor dem senkrechten Strich | für reguläre Ausdrücke.

grep 'pattern1\|pattern2' fileName_or_filePath

Die neueste Art, grep zu verwenden, ist mit -E Möglichkeit. Diese Option behandelt das von Ihnen verwendete Muster als erweiterten regulären Ausdruck .

grep -E 'pattern1|pattern2' fileName_or_filePath

Die veraltete Version von extended grep ist egrep .

egrep 'pattern1|pattern2' fileName_or_filePath

Eine weitere Option besteht darin, dem grep mehrere separate Muster hinzuzufügen Befehl.

Verwenden Sie dazu das -e kennzeichnen und die gewünschte Anzahl von Suchmustern hinzufügen:

grep -e pattern1 -e pattern2 fileName_or_filePath

Was ist der Unterschied zwischen grep, grep -E und egrep?

Der egrep Befehl ist eine veraltete Version von Extended Grep. Es hat dieselbe Funktion wie grep -E .

Der Unterschied zwischen grep und erweitertem grep besteht darin, dass erweitertes grep später hinzugefügte Metazeichen enthält.

Diese Zeichen sind die Klammern () , geschweifte Klammern {} , und Fragezeichen . Das Pipe-Zeichen | wird im erweiterten grep auch als Metazeichen behandelt.

Beispiele für die Verwendung von Grep für mehrere Zeichenfolgen, Muster und Wörter

Um sicherzustellen, dass Sie verstehen, wie grep verwendet wird, um mehrere Zeichenfolgen zu durchsuchen, schlagen wir vor, eine Datei mit Text zu erstellen, an der wir einige verschiedene Anwendungsfälle ausprobieren werden.

In unserem Fall haben wir die Datei sample.txt genannt und fügte ein paar Absätze Text hinzu. Wir haben die Datei im Verzeichnis des Tests abgelegt user, also in /home/test/sample.txt

Wie man mehrere Muster in einer Datei grept

In den folgenden Beispielen verwenden wir grep anstelle von erweitertem grep. Vergessen Sie nicht, den umgekehrten Schrägstrich vor dem Pipe-Zeichen zu verwenden .

Da grep das Pipe-Symbol nicht als Wechseloperator unterstützt, müssen Sie das Escape-Zeichen (Backslash \) verwenden, um grep mitzuteilen Befehl, die Pipe anders zu behandeln.

Zum Beispiel, um nach den Wörtern extra zu suchen und Wert in der sample.txt Datei verwenden Sie diesen Befehl:

grep 'extra\|value' sample.txt

Die Ausgabe hebt die Zeichenfolge hervor, die Sie grep.

wollten

Wenn sich dieselbe Datei in einem anderen Verzeichnis befindet , müssen Sie zu diesem Verzeichnis navigieren oder den vollständigen Pfad der Datei verwenden:

grep 'extra\|value' /home/test/Desktop/sample.txt

So suchen Sie nach mehr als zwei Wörtern , fügen Sie sie auf die gleiche Weise hinzu.

Um beispielsweise nach drei Wörtern zu suchen, fügen Sie die gewünschte Zeichenkette gefolgt von einem umgekehrten Schrägstrich und einem senkrechten Strich hinzu:

grep 'extra\|value\|service' sample.txt

Sehen wir uns an, wie der obige grep-Befehl aussieht, wenn grep -E verwendet wird , egrep und grep -e :

grep -E ‘extra|value|service’ sample.txt
egrep ‘extra|value|service’ sample.txt
grep -e extra -e value -e service sample.txt

Wir werden grep verwenden in weiteren Beispielen, aber Sie können die Syntax verwenden, die Sie bevorzugen.

Nach mehreren genauen Übereinstimmungen in einer Datei suchen

Wenn Sie exakte Übereinstimmungen für mehrere Muster finden möchten, übergeben Sie -w -Flag zum grep Befehl.

grep -w 'provide\|count' sample.txt

Die folgende Ausgabe zeigt beispielsweise den Unterschied zwischen der Suche ohne -w und damit:

Wie Sie sehen können, sind die Ergebnisse unterschiedlich. Der erste Befehl zeigt alle Zeilen mit den verwendeten Strings.

Der zweite Befehl zeigt, wie man nach exakten Übereinstimmungen für mehrere Zeichenfolgen sucht. Die Ausgabe gibt nur die Zeilen aus, die die exakten Wörter enthalten.

Groß-/Kleinschreibung ignorieren, wenn Grep für mehrere Zeichenfolgen verwendet wird

Um bei der Suche nach mehreren Mustern nichts zu verpassen, verwenden Sie -i Flag, um Groß- und Kleinschreibung zu ignorieren.

Zum Beispiel ignorieren wir die Groß-/Kleinschreibung mit diesem Befehl:

grep -i 'phoenix\|linux' sample.txt

Die Ausgabe zeigt, wie sich die beiden Befehle unterscheiden. Wenn Sie das -i einfügen markieren und Groß-/Kleinschreibung ignorieren, enthält das Ergebnis für mehrere Übereinstimmungen alle Übereinstimmungen.

Auf diese Weise erhalten Sie zusätzliche Ergebnisse. Wenn Sie auch das -w hinzufügen Flag zu diesem Befehl hinzufügen, können Sie die Ergebnisse noch weiter eingrenzen:

Zeige die Anzahl mehrerer Übereinstimmungen in einer Datei

Angenommen, Sie überwachen eine Protokolldatei und möchten sehen, ob die Anzahl der Warnungen oder Meldungen zunimmt. Sie möchten keine detaillierten Ergebnisse sehen, wenn eine große Anzahl von Übereinstimmungen zurückgegeben wird.

Zum Beispiel, um die Anzahl mehrerer Übereinstimmungen in bootstrap.log anzuzeigen Datei, geben Sie ein:

grep -c 'warning\|error' /var/log/bootstrap.log

Die Ausgabe gibt die Anzahl der Übereinstimmungen aus. Auf diese Weise können Sie schnell feststellen, ob sich die Anzahl der Warnungen und Fehler erhöht hat.

Grep für mehrere Muster in einem bestimmten Dateityp

Sie können grep verwenden, um nur in einem bestimmten Dateityp nach mehreren Zeichenfolgen zu suchen. Wenn Sie Protokolldateien in einem Verzeichnis überwachen oder alle Textdateien durchsuchen möchten, verwenden Sie anstelle eines Dateinamens ein Sternchen und die Dateierweiterung.

Zum Beispiel, um alle .log nach Warnungen und Fehlern zu durchsuchen Dateien im Verzeichnis /var/log/ Verzeichnis, geben Sie ein:

grep 'warning\|error' /var/log/*.log

Um besser zu demonstrieren, wie diese Option funktioniert, zeigen wir nur die Anzahl der Übereinstimmungen.

Die Ausgabe zeigt alle Dateien, die grep nach den von Ihnen verwendeten Zeichenfolgen durchsucht hat.

Suche rekursiv nach mehreren Mustern in einer Datei

Das grep Der Befehl sucht nur im aktuellen Verzeichnis, wenn Sie den Sternchen-Platzhalter verwenden.

Um bei der Suche nach mehreren Mustern alle Unterverzeichnisse einzubeziehen, fügen Sie -R hinzu Operator für grep:

grep -R 'warning\|error' /var/log/*.log

Die Ausgabe gibt Ergebnisse aus allen Dateien grep zurück Befehl in /var/log/ gefunden Verzeichnis und seine Unterverzeichnisse.


Linux
  1. Wie führe ich Grep mit mehreren und Mustern aus?

  2. Wie spezifizieren wir mehrere Ignorierungsmuster für den Befehl „tree“?

  3. Linux – Woher wissen Sie, wofür Sie in Dmesg grep müssen?

  4. Wie finde ich mehrere Zeichenfolgen in Dateien?

  5. Wie grep ich rekursiv?

Wie man nach mehreren Zeichenfolgen und Mustern grep

Wie man den Befehl „grep“ gut nutzt

Wie kann ich in einer Datei nach einem mehrzeiligen Muster suchen?

Wie kann ich den Inhalt mehrerer PDF-Dateien durchsuchen?

Wie suche ich nach Inhalten nach dem Muster?

Wie man in einem Bash-Skript nach Unicode sucht