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.
wolltenWenn 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.