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

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:

$ egrep „search_string“ filename

Beispiel:

$ egrep debian samplefile.txt

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:

$ egrep „search_string“ filename_pattern

Beispiel:

Hier suchen wir nach dem Wort „debian“ in allen .txt-Dateien, indem wir das Dateinamensmuster wie folgt angeben:

$ egrep „debian“ *.txt

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:

$ egrep -r „search_string“ *

Beispiel:

In diesem Beispiel suche ich nach dem Wort „sample“ in den Dateien des gesamten current(Downloads) Verzeichnisses.

$ egrep -r „sample“ *

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:

$ egrep -i „search_string“ filename

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.

$ egrep -i „search_string“ filename

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:

$ egrep -w „search_string“ filename

Beispiel:

Hier suche ich nach der Zeichenfolge „on“ in einer Beispieldatei:

$ egrep -i „on“ samplefile.txt

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:

$ egrep -iw „on“ samplefile.txt

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:

$ egrep -l „search_string“ filename_pattern

Beispiel:

Hier suche ich nach der Zeichenkette „sample“ in allen .txt-Dateien im aktuellen Verzeichnis:

$ egrep -l sample *.txt

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:

$ egrep -o „search_string“ filename

Beispiel:

In diesem Beispiel suche ich nach dem Wort „This“ in meiner Datei.

$ egrep -o Dies Beispieldatei_.txt

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:

$ egrep -A <N> „search_string“ filename

Beispiel:

$ egrep -A 2 „sample“ samplefile.txt

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:

$ egrep -B <N> „search_string“ filename

Beispiel:

$ egrep -B 2 „sample“ samplefile.txt

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:

$ egrep -C <N> „search_string“ filename

Beispiel:

$ egrep -C 2 „sample“ samplefile.txt

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:

$ egrep „ReguläreAusdrücke“ Dateiname

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:

$ sudo export GREP_OPTIONS=‘–color=auto‘ GREP_COLOR=’100;8′

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:

$ egrep -v „search_string“ filename

Beispiel:

Aus der erwähnten Beispieldatei wollen wir die Zeile mit dem Wort „zwei“ in der Ausgabe weglassen, daher verwenden wir folgenden Befehl:

$ egrep -v „zwei“ Beispieldatei_.txt

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:

$ egrep -v -e „search_string“/“pattern“ -e „search_string“/“pattern“
…. 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:

$ egrep -v -e „eins“ -e „zwei“ Beispieldatei_.txt

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:

$ egrep -c „search_string“ filename

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:

$ egrep -c „This“ filename

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:

$ grep -v -c „search_string“ filename

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:

$ grep -n „search_string“ filename

Beispiel:

$ grep -n „This“ samplefile_.txt

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.

$ grep -o -b „search_string“ filename

Beispiel:

$ grep -o -b „This“ samplefile_.txt

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.