Beispiel 1: Suchen nach einer bestimmten Zeichenfolge in einer Datei
Dies ist die häufigste Verwendung des egrep-Befehls. Was Sie tun, ist, dass Sie eine Zeichenfolge angeben, nach der Sie suchen möchten, und den Dateinamen, in dem Sie diese Zeichenfolge suchen möchten. Das Ergebnis zeigt dann die gesamte Zeile mit der gesuchten Zeichenfolge an.
Syntax:
$ egrep „search_string“ DateinameBeispiel:
$ egrep Debian-Beispieldatei.TXTIn diesem Beispiel habe ich in der angegebenen Textdatei nach dem Wort „debian“ gesucht. Sie können sehen, wie die Ergebnisse die gesamte Zeile anzeigen, die das Wort „debian“ enthält:
Beispiel 2: Suchen nach einer bestimmten Zeichenfolge in mehreren Dateien
Mit dem Befehl egrep können Sie unter mehreren Dateien im selben Verzeichnis nach einer Zeichenfolge suchen. Sie müssen nur etwas genauer sein, wenn Sie ein "Muster" für die gesuchten Dateien bereitstellen. Dies wird an dem Beispiel, das wir vorstellen werden, deutlicher.
Syntax:
$ egrep "search_string" filename_patternBeispiel:
Hier suchen wir nach dem Wort „debian“ in allen .txt-Dateien, indem Sie das Dateinamenmuster wie folgt angeben:
$ egrep „debian“ *.TXT
Der Befehl hat alle Zeilen ausgegeben, zusammen mit den Dateinamen, die das Wort „debian“ aus allen .txt-Dateien im aktuellen Verzeichnis.
Beispiel 3: Rekursives Durchsuchen des Strings im gesamten Verzeichnis
Wenn Sie in allen Dateien eines Verzeichnisses und seiner Unterverzeichnisse nach einer Zeichenfolge suchen möchten, können Sie dies mit dem Flag -r mit dem Befehl egrep tun.
Syntax:
$ egrep -r "Suchzeichenfolge" *Beispiel:
In diesem Beispiel suche ich nach dem Wort „sample“ in den Dateien des gesamten aktuellen (Downloads) Verzeichnisses.
$ egrep -r "Beispiel" *
Die Ergebnisse enthalten alle Zeilen zusammen mit den Dateinamen, die das Wort „sample“ aus allen Dateien im Downloads-Verzeichnis und seinen Unterverzeichnissen enthalten contain.
Beispiel 4: Durchführen einer Suche ohne Beachtung der Groß-/Kleinschreibung
Mit dem Flag -i können Sie den egrep-Befehl verwenden, um die Ergebnisse basierend auf einer Suchzeichenfolge auszugeben, ohne sich um deren Groß-/Kleinschreibung kümmern zu müssen.
Syntax:
$ egrep -i "search_string" DateinameBeispiel:
Hier suche ich nach dem Wort „debian“ und möchte, dass die Ergebnisse alle Zeilen aus der Datei anzeigen, die das Wort „debian“ oder „Debian“ enthalten, unabhängig von der Groß-/Kleinschreibung.
$ egrep -i "search_string" Dateiname
Sie können sehen, wie mir das Flag -i dabei geholfen hat, alle Zeilen, die die Suchzeichenfolge enthalten, durch eine Suche mit "unempfindlicher Groß-/Kleinschreibung" abzurufen.
Beispiel 5: Suche nach einer Zeichenfolge als vollständiges Wort und nicht als Teilzeichenfolge
Wenn Sie normalerweise über egrep nach einer Zeichenfolge suchen, werden alle Wörter, die die Zeichenfolge enthalten, als Teilzeichenfolge ausgegeben. Wenn Sie beispielsweise nach der Zeichenfolge „on“ suchen, werden alle Wörter gedruckt, die die Zeichenfolge „on“ enthalten, wie z. B. „on“, „nur“, „monitor“, „klonen“ usw. Wenn Sie möchten, dass die Ergebnisse nur das Wort „on“ als vollständiges Wort und nicht als Teilzeichenfolge anzeigen, können Sie das Flag -w mit egrep verwenden.
Syntax:
$ egrep -w „search_string“ DateinameBeispiel:
Hier suche ich in einer Beispieldatei nach dem String „on“:
$ egrep -i „on“ Beispieldatei.TXT
Sie können in der obigen Ausgabe sehen, dass sie auch das Wort „nur“ enthält. Dies ist jedoch nicht das, was ich will, da ich ausschließlich nach dem Wort „an“ suche. Dies ist der Befehl, den ich stattdessen verwenden werde:
$ egrep -iw „on“ Beispieldatei.TXT
Jetzt enthalten meine Suchergebnisse nur die Zeilen, die das Wort „on“ als ganzes Wort enthalten.
Beispiel 6: Nur die Dateinamen drucken, die die Zeichenfolge . enthalten
Manchmal möchten wir nur die Dateinamen abrufen, die einen bestimmten String enthalten, anstatt die Zeilen zu drucken, die ihn enthalten. Dies kann mit dem Flag -l (Kleinbuchstabe L) mit dem egrep-Befehl erfolgen.
Syntax:
$ egrep -l "search_string" filename_patternBeispiel:
Hier suche ich den String „sample“ in allen .txt-Dateien im aktuellen Verzeichnis:
$ egrep -l Probe *.TXT
Die Suchergebnisse geben nur den Namen der Dateien aus, die die angegebene Zeichenfolge enthalten.
Beispiel 7: Nur die Suchzeichenfolge aus einer Datei drucken
Anstatt die gesamte Zeile zu drucken, die die Suchzeichenfolge enthält, können Sie den egrep-Befehl verwenden, um die Zeichenfolge selbst auszugeben. Die Zeichenfolge wird so oft gedruckt, wie sie in der angegebenen Datei vorkommt.
Syntax:
$ egrep -o "search_string" DateinameBeispiel:
In diesem Beispiel suche ich in meiner Datei nach dem Wort „This“.
$ egrep -o Diese Beispieldatei_.TXT
Hinweis: Diese Verwendung des Befehls ist praktisch, wenn Sie nach einer Zeichenfolge suchen, die auf einem Muster eines regulären Ausdrucks basiert. Wir werden reguläre Ausdrücke in einem der kommenden Beispiele ausführlich erklären.
Beispiel 8: Anzeigen von n Zeilen vor, nach oder um die Suchzeichenfolge
Manchmal ist es sehr wichtig, den Kontext in einer Datei zu kennen, in der eine bestimmte Zeichenfolge verwendet wird. Der egrep ist in dem Sinne praktisch, dass er verwendet werden kann, um die Zeile anzuzeigen, die den Suchstring enthält, und auch eine bestimmte Anzahl von Zeilen davor, danach und um ihn herum.
Dies ist die Beispieltextdatei, die ich verwenden werde, um die kommenden Beispiele zu erklären:
N Zeilenanzahl Nach dem Suchstring:
Wenn Sie das A-Flag wie folgt verwenden, wird die Zeile mit der Suchzeichenfolge und N Zeilen danach angezeigt:
$ egrep -ABeispiel:
$ egrep -A 2 "Beispiel"-Beispieldatei.TXT
N Zeilenanzahl Vor dem Suchstring:
Wenn Sie das B-Flag wie folgt verwenden, wird die Zeile mit der Suchzeichenfolge und N Zeilen davor angezeigt:
$ egrep -BBeispiel:
$ egrep -B 2 "Beispiel"-Beispieldatei.TXT
N Zeilenanzahl Vor dem Suchstring:
Wenn Sie das C-Flag wie folgt verwenden, wird die Zeile angezeigt, die die Suchzeichenfolge enthält, und die Anzahl N von Zeilen davor und danach:
$ egrep -CBeispiel:
$ egrep -C 2 "Beispiel"-Beispieldatei.TXT
Beispiel 9: Übereinstimmender regulärer Ausdruck in Dateien
Der egrep-Befehl wird leistungsfähiger, wenn Sie in einer Datei nach regulären Ausdrücken statt nach festen Suchzeichenfolgen suchen search.
Syntax:
$ egrep "RegularExpressions" DateinameLassen Sie uns erklären, wie Sie reguläre Ausdrücke in Ihrer egrep-Suche verwenden können:
Wiederholungsoperator | Benutzen |
? | Das vorherige Element vor ? ist optional und wird maximal einmal abgeglichen
|
* | Das vorherige Element vor * wird null oder öfter abgeglichen |
+ | Das vorherige Element vor + wird ein- oder mehrmals abgeglichen |
n | Das vorhergehende Element wird n-mal genau gefunden. |
n, | Das vorherige Element wird n- oder mehrmals gefunden match |
,m | Das vorherige Element wird maximal m-mal abgeglichen |
n, m | Das vorhergehende Element wird mindestens n-mal, aber nicht mehr als m-mal gefunden |
Beispiel:
Im folgenden Beispiel werden die Zeilen mit dem folgenden Ausdruck abgeglichen:
beginnend mit „Gnome“ und endend mit „Programme“
Beispiel 10: Hervorheben des Suchstrings
Wenn Sie die Umgebungsvariable GREP_OPTIONS wie folgt festlegen, erhalten Sie Ihre Ausgabe mit der in den Ergebnissen hervorgehobenen Suchzeichenfolge/dem Suchmuster:
$ sudo export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'Sie können dann auf eine beliebige Weise nach der Zeichenfolge suchen, die wir in den Beispielen dieses Artikels beschrieben haben.
Beispiel 11: Durchführen der Invert-Suche in einer Datei
Mit invertierter Suche meinen wir, dass der egrep-Befehl alles in der Datei ausgibt, außer den Zeilen, die die Suchzeichenfolge enthalten. Wir werden die folgende Beispieldatei verwenden, um die invertierte Suche durch egrep . zu erklären. Wir haben den Inhalt der Datei mit dem Befehl cat ausgedruckt:
Syntax:
$ egrep -v "search_string" DateinameBeispiel:
In der erwähnten Beispieldatei möchten wir die Zeile mit dem Wort „two“ in der Ausgabe weglassen, daher verwenden wir den folgenden Befehl:
$ egrep -v "zwei" Beispieldatei_.TXT
Sie können sehen, wie die Ausgabe alles aus der Beispieldatei enthält, mit Ausnahme der zweiten Zeile, die die Suchzeichenfolge „two“ 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 einer Suchzeichenfolge/einem Suchmuster durchzuführen.
Wir werden dieselbe Beispieldatei verwenden, die wir in Beispiel 11 erwähnt haben, um dieses Szenario zu erklären.
Syntax:
$ egrep -v -e "Suchzeichenfolge"/"Muster" -e "Suchzeichenfolge"/"Muster"… Dateiname
Beispiel:
In der erwähnten Beispieldatei möchten wir die Zeile(n) mit den Wörtern „eins“ und „zwei“ in der Ausgabe weglassen, daher verwenden wir den folgenden Befehl:
$ egrep -v -e „eins“ -e „zwei“ Beispieldatei_.TXTWir haben zwei Wörter angegeben, die mit dem Flag -e weggelassen werden können, daher sieht die Ausgabe wie folgt aus:
Beispiel 13: Die Anzahl der Zeilen drucken, die der Suchzeichenfolge entsprechen
Anstatt die gesuchte Zeichenfolge aus der Datei oder die Zeilen, die sie enthalten, zu drucken, können Sie den egrep-Befehl verwenden, um die Anzahl der Zeilen zu zählen und auszudrucken, die mit der Zeichenfolge übereinstimmen. Dieser Zähler kann mit dem Flag -c mit dem egrep-Befehl abgerufen werden.
Syntax:
$ egrep -c "search_string" DateinameBeispiel:
In diesem Beispiel verwenden wir das Flag -c, um die Anzahl der Zeilen zu zählen, die das Wort "This" in unserer Beispieldatei enthalten:
$ egrep -c "Dieser" Dateiname
Sie können hier auch die invertierte Suchfunktion verwenden, um die Anzahl der Zeilen zu zählen und auszudrucken, die die Suchzeichenfolge nicht enthalten:
$ grep -v -c "search_string" Dateiname
Beispiel 14: Anzeigen der Zeilennummer, in der die Zeichenfolge übereinstimmt
Mit dem Flag -n können Sie den egrep-Befehl dazu bringen, die übereinstimmende Zeile zusammen mit der Zeilennummer auszugeben, die die Suchzeichenfolge enthält.
Syntax:
$ grep -n "search_string" DateinameBeispiel:
$ grep -n "Diese" Beispieldatei_.TXT
Sie können sehen, wie die Zeilennummern in den Suchergebnissen angezeigt werden.
Beispiel 15: Anzeige der Position in der Datei, an der der Suchbegriff übereinstimmt
Wenn Sie wissen möchten, an welcher Stelle in der Datei der Suchstring existiert, können Sie das Flag -b mit dem egrep-Befehl verwenden use.
$ grep -o -b "search_string" DateinameBeispiel:
$ grep -o -b "Diese" Beispieldatei_.TXT
Die Suchergebnisse geben den Byte-Offset der Datei aus, in der das Suchwort vorhanden ist.Dies war eine detaillierte Verwendung des egrep-Befehls. Durch die Verwendung einer Kombination der in diesem Artikel erläuterten Flags können Sie aussagekräftigere und komplexere Suchen in Ihren Dateien durchführen.