Der egrep-Befehl gehört zur Familie des grep-Befehls, der in Linux zur Mustersuche verwendet wird. Wenn Sie den Befehl grep verwendet haben, funktioniert egrep genauso wie grep -E (grep Extended regex‘). Egrep durchsucht eine bestimmte Datei Zeile für Zeile und gibt die Zeile(n) aus, die den Suchstring/regulären Ausdruck enthalten. In diesem Artikel werden wir 15 nützliche Beispiele für die egrep-Befehle erläutern, die sowohl Neulingen als auch Experten helfen werden, sinnvolle Suchen in Linux durchzuführen.
- Beispiel 1: Suche nach einer bestimmten Zeichenkette in einer Datei
- Beispiel 2: Suche nach einer bestimmten Zeichenfolge in mehreren Dateien
- Beispiel 3: Rekursives Durchsuchen des gesamten Verzeichnisses nach einer Zeichenkette
- Beispiel 4: Groß- und Kleinschreibung nicht beachten
- Beispiel 5: Suche nach einer Zeichenkette als ganzes Wort und nicht als Teilstring
- Beispiel 6: Nur die Dateinamen ausgeben, die die Zeichenkette enthalten
- Beispiel 7: Nur die Suchzeichenkette einer Datei ausdrucken
- Beispiel 8: Anzeige der Anzahl der Zeilen vor, nach oder um die Suchzeichenfolge
- Beispiel 9: Übereinstimmende reguläre Ausdrücke in Dateien
- Beispiel 10: Hervorhebung der Suchzeichenkette
- Beispiel 11: Durchführen einer invertierten Suche in einer Datei
- Beispiel 12: Durchführen einer invertierten Suche basierend auf mehreren Kriterien/Suchmustern
- Beispiel 13: Drucken der Anzahl der Zeilen, die mit der Suchzeichenkette übereinstimmen
- Beispiel 14: Anzeige der Zeilennummer, in der die Zeichenkette gefunden wurde
- Beispiel 15: Anzeige der Position in der Datei, auf die der Suchstring zutrifft
Beispiel 1: Suche nach einer bestimmten Zeichenkette in einer Datei
Dies ist die häufigste Anwendung des egrep-Befehls. Sie geben eine Zeichenkette an, nach der Sie suchen wollen, und den Dateinamen, in dem Sie diese Zeichenkette nachschlagen wollen. Das Ergebnis zeigt dann die gesamte Zeile an, die die gesuchte Zeichenfolge enthält.
Syntax:
Beispiel:
In diesem Beispiel habe ich nach dem Wort „debian“ in der angegebenen Textdatei gesucht. Sie können sehen, wie die Ergebnisse die gesamte Zeile anzeigen, die das Wort „debian“ enthält:
Beispiel 2: Suche nach einer bestimmten Zeichenfolge in mehreren Dateien
Mit dem Befehl egrep können Sie nach einer Zeichenfolge in mehreren Dateien suchen, die sich im selben Verzeichnis befinden. Sie müssen nur etwas genauer sein, indem Sie ein „Muster“ für die gesuchten Dateien angeben. Dies wird anhand des folgenden Beispiels deutlicher.
Syntax:
Beispiel:
Hier suchen wir nach dem Wort „debian“ in allen .txt-Dateien, indem wir das Dateinamensmuster wie folgt angeben:
Der Befehl hat alle Zeilen zusammen mit den Dateinamen ausgegeben, die das Wort „debian“ in allen .txt-Dateien im aktuellen Verzeichnis enthalten.
Beispiel 3: Rekursives Durchsuchen des gesamten Verzeichnisses nach einer Zeichenkette
Wenn Sie nach einer Zeichenkette in allen Dateien eines Verzeichnisses und seiner Unterverzeichnisse suchen wollen, können Sie dies tun, indem Sie das Flag -r mit dem Befehl egrep verwenden.
Syntax:
Beispiel:
In diesem Beispiel suche ich nach dem Wort „sample“ in den Dateien des gesamten current(Downloads) Verzeichnisses.
Das Ergebnis enthält alle Zeilen mit den Dateinamen, die das Wort „sample“ in allen Dateien des Downloads-Verzeichnisses und seiner Unterverzeichnisse enthalten.
Beispiel 4: Groß- und Kleinschreibung nicht beachten
Mit dem Flag -i können Sie den Befehl egrep verwenden, um die Ergebnisse auf der Grundlage eines Suchstrings ohne Berücksichtigung der Groß- und Kleinschreibung auszugeben.
Syntax:
Beispiel:
Hier suche ich nach dem Wort „debian“ und möchte, dass die Ergebnisse alle Zeilen der Datei anzeigen, die das Wort „debian“ oder „Debian“ enthalten, unabhängig von der Groß- und Kleinschreibung.
Sie können sehen, wie das Flag -i mir geholfen hat, alle Zeilen, die den Suchstring enthalten, durch eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung zu finden.
Beispiel 5: Suche nach einer Zeichenkette als ganzes Wort und nicht als Teilstring
Wenn Sie normalerweise mit egrep nach einer Zeichenkette suchen, werden alle Wörter ausgegeben, die die Zeichenkette als Teilstring enthalten. Wenn Sie zum Beispiel nach der Zeichenkette „on“ suchen, werden alle Wörter ausgegeben, die die Zeichenkette „on“ enthalten, wie „on“, „only“, „monitor“, „clone“ usw. Wenn Sie möchten, dass die Ergebnisse nur das Wort „on“ als ganzes Wort und nicht als Teilstring anzeigen, können Sie das Flag -w mit egrep verwenden.
Syntax:
Beispiel:
Hier suche ich nach der Zeichenfolge „on“ in einer Beispieldatei:
Sie können in der obigen Ausgabe sehen, dass sie auch das Wort „only“ enthält. Dies ist jedoch nicht das, was ich will, da ich ausschließlich nach dem Wort „on“ suche. Daher verwende ich stattdessen den folgenden Befehl:
Nun enthalten meine Suchergebnisse nur die Zeilen, die das Wort „on“ als ganzes Wort enthalten.
Beispiel 6: Nur die Dateinamen ausgeben, die die Zeichenkette enthalten
Manchmal möchte man nur die Dateinamen abrufen, die eine bestimmte Zeichenkette enthalten, anstatt alle Zeilen auszudrucken, die sie enthalten. Dies kann mit dem Flag -l (kleines L) mit dem egrep-Befehl erreicht werden.
Syntax:
Beispiel:
Hier suche ich nach der Zeichenkette „sample“ in allen .txt-Dateien im aktuellen Verzeichnis:
Die Suchergebnisse geben nur die Namen der Dateien aus, die die angegebene Zeichenkette enthalten.
Beispiel 7: Nur die Suchzeichenkette einer Datei ausdrucken
Anstatt die gesamte Zeile, die die Suchzeichenkette enthält, auszudrucken, können Sie den Befehl egrep verwenden, um die Zeichenkette selbst auszudrucken. Die Zeichenfolge wird so oft gedruckt, wie sie in der angegebenen Datei vorkommt.
Syntax:
Beispiel:
In diesem Beispiel suche ich nach dem Wort „This“ in meiner Datei.
Hinweis: Diese Verwendung des Befehls ist praktisch, wenn man nach einer Zeichenkette sucht, die auf einem Muster eines regulären Ausdrucks basiert. Wir werden reguläre Ausdrücke in einem der nächsten Beispiele ausführlich erklären.
Beispiel 8: Anzeige der Anzahl der Zeilen vor, nach oder um die Suchzeichenfolge
Manchmal ist es sehr wichtig, den Kontext in einer Datei zu kennen, in dem eine bestimmte Zeichenfolge verwendet wird. Das egrep ist insofern nützlich, als es die Zeile mit dem Suchstring sowie eine bestimmte Anzahl von Zeilen davor, danach und darum herum anzeigen kann.
Dies ist die Beispiel-Textdatei, die ich verwenden werde, um die kommenden Beispiele zu erklären:
N Anzahl der Zeilen nach dem Suchstring:
Wenn man das A-Flag auf folgende Weise verwendet, wird die Zeile mit dem Suchstring und N Anzahl der Zeilen danach angezeigt:
Beispiel:
N Anzahl der Zeilen vor dem Suchstring:
Wenn Sie das B-Flag auf folgende Weise verwenden, wird die Zeile mit dem Suchstring und N Zeilen davor angezeigt:
Beispiel:
N Anzahl der Zeilen vor dem Suchstring:
Die Verwendung des C-Flags in der folgenden Weise zeigt die Zeile an, die den Suchstring enthält, sowie N Anzahl der Zeilen davor und danach:
Beispiel:
Beispiel 9: Übereinstimmende reguläre Ausdrücke in Dateien
Der Befehl egrep wird leistungsfähiger, wenn Sie nach regulären Ausdrücken statt nach festen Suchzeichenfolgen in einer Datei suchen.
Syntax:
Lassen Sie uns erklären, wie Sie reguläre Ausdrücke in Ihrer egrep-Suche verwenden können:
Wiederholungsoperator | Verwenden |
? | Das vorangehende Element vor ? ist optional und wird maximal einmal abgeglichen |
* | Das vorangehende Element vor * wird null oder mehr Mal abgeglichen |
+ | Das vorangehende Element vor + wird ein oder mehrere Male übereinstimmen |
{n} | Das vorangehende Element wird genau n-mal übereinstimmen. |
{n,} | Das vorangehende Element wird n-mal oder öfter übereinstimmen |
{,m} | Das vorangehende Element wird maximal m-mal übereinstimmen |
{n,m} | Das vorangehende Element wird mindestens n-mal, aber höchstens m-mal übereinstimmen |
Beispiel:
Im folgenden Beispiel werden die Zeilen, die den folgenden Ausdruck enthalten, abgeglichen:
Beginnend mit „Gnome“ und endend mit “ programs“
Beispiel 10: Hervorhebung der Suchzeichenkette
Wenn Sie die GREP_OPTIONS Umgebungsvariable wie folgt setzen, erhalten Sie Ihre Ausgabe mit der Suchzeichenkette/dem Suchmuster hervorgehoben in den Ergebnissen:
Sie können dann nach der Zeichenkette auf jede Weise suchen, die wir in den Beispielen dieses Artikels beschrieben haben.
Beispiel 11: Durchführen einer invertierten Suche in einer Datei
Mit invertierter Suche ist gemeint, dass der Befehl egrep alles in der Datei ausgibt, mit Ausnahme der Zeilen, die den Suchstring enthalten. Anhand der folgenden Beispieldatei wollen wir die invertierte Suche mit egrep erklären. Wir haben den Inhalt der Datei mit dem Befehl cat ausgedruckt:
Syntax:
Beispiel:
Aus der erwähnten Beispieldatei wollen wir die Zeile mit dem Wort „zwei“ in der Ausgabe weglassen, daher verwenden wir folgenden Befehl:
Sie sehen, dass die Ausgabe alles aus der Beispieldatei enthält, mit Ausnahme der zweiten Zeile, die den Suchstring „zwei“ enthielt.
Beispiel 12: Durchführen einer invertierten Suche basierend auf mehreren Kriterien/Suchmustern
Mit dem Flag -v können Sie den egrep-Befehl auch dazu bringen, eine invertierte Suche basierend auf mehr als einem Suchstring/Suchmuster durchzuführen.
Wir verwenden dieselbe Beispieldatei, die wir in Beispiel 11 erwähnt haben, um dieses Szenario zu erklären.
Syntax:
…. filename
Beispiel:
Aus der erwähnten Beispieldatei wollen wir die Zeile(n) mit den Wörtern „eins“ und „zwei“ in der Ausgabe weglassen, daher verwenden wir folgenden Befehl:
Wir haben zwei Wörter angegeben, die mit dem Flag -e weggelassen werden sollen, daher wird die Ausgabe wie folgt aussehen:
Beispiel 13: Drucken der Anzahl der Zeilen, die mit der Suchzeichenkette übereinstimmen
Anstatt die gesuchte Zeichenkette aus der Datei oder die Zeilen, die sie enthalten, zu drucken, können Sie den Befehl egrep verwenden, um die Anzahl der Zeilen zu zählen und zu drucken, die mit der Zeichenkette übereinstimmen. Diese Zählung kann mit dem Flag -c des Befehls egrep abgerufen werden.
Syntax:
Beispiel:
In diesem Beispiel werden wir das Flag -c verwenden, um die Anzahl der Zeilen zu zählen, die das Wort „This“ in unserer Beispieldatei enthalten:
Sie können hier auch die Funktion „Invert search“ verwenden, um die Anzahl der Zeilen zu zählen und zu drucken, die den Suchstring nicht enthalten:
Beispiel 14: Anzeige der Zeilennummer, in der die Zeichenkette gefunden wurde
Mit dem Flag -n können Sie den Befehl egrep veranlassen, die gefundene Zeile zusammen mit der Zeilennummer, die die Suchzeichenkette enthält, auszugeben.
Syntax:
Beispiel:
Sie können sehen, wie die Zeilennummern neben den Suchergebnissen angezeigt werden.
Beispiel 15: Anzeige der Position in der Datei, auf die der Suchstring zutrifft
Wenn Sie die Position in der Datei wissen wollen, an der der Suchstring existiert, können Sie das Flag -b mit dem Befehl egrep verwenden.
Beispiel:
Die Suchergebnisse geben den Byte-Offset der Datei aus, in der das Suchwort existiert.Dies war eine ausführliche Anwendung des egrep-Befehls. Durch die Verwendung einer Kombination der in diesem Artikel erläuterten Flags können Sie sinnvollere und komplexere Suchen in Ihren Dateien durchführen.