GREP unter Linux verstehen: Nutzung und Anwendungen
Grep ist ein kompaktes UNIX-Tool für die Mustersuche. Ursprünglich in V6 UNIX eingeführt, ist es zu einem festen Bestandteil verschiedener UNIX-ähnlicher Betriebssysteme geworden, darunter Linux, macOS und BSD-Varianten. In diesem Artikel werden wir die grundlegenden Funktionen von Grep untersuchen und praktische Beispiele für seine Anwendung in alltäglichen Aufgaben liefern.
Die Grundlagen von Grep verstehen
Die Hauptfunktion von Grep ist unkompliziert: Es verarbeitet Eingaben, um passende Textmuster zu identifizieren und anzuzeigen. Dieses Dienstprogramm kann nahezu jede reine Textquelle untersuchen und kann Dateien direkt durchsuchen oder mit Ausgaben anderer Befehle arbeiten.
Um mit der Verwendung von Grep zu beginnen, besteht einer der einfachsten Befehle darin, aus einer Textdatei zu lesen. Sie können sich den Inhalt beispielsweise sample.txt
mit dem folgenden Befehl anzeigen lassen:
Sie können Ihre Textdateien auch nach bestimmten Wörtern suchen:
Darüber hinaus kann Grep mit UNIX-Pipes kombiniert werden, um mehrere Befehle in einer einzigen Operation zusammenzufassen:
Um Einblicke in die Funktionsweise von Pagern unter Linux zu erhalten, werfen Sie einen Blick auf unseren Spickzettel zu GNU Less.
Suchen nach Dateien in einem Verzeichnis
Eine praktische Anwendung von Grep ist das Auffinden von Dateien in einem Verzeichnis. Sie können die Ausgabe des ls
Befehls direkt an Grep weiterleiten.
Dieser Befehl zeigt beispielsweise alle JPEG-Dateien in Ihrem Download-Verzeichnis an, indem ihre Erweiterungen hervorgehoben werden:
Sie können die Ausgabe erweitern ls
und komplexere Mustervergleiche durchführen. Der folgende Befehl listet beispielsweise alle Dateien im aktuellen Verzeichnis auf, die kleiner als 1 MB sind:
Groß- und Kleinschreibung ignorieren
Standardmäßig berücksichtigen die meisten UNIX-ähnlichen Tools Groß- und Kleinschreibung. Das bedeutet, dass die Zeichenfolgen „Hallo“, „hello“, „hEllo“ und „helLo“ als unterschiedliche Einträge interpretiert werden.
Dies kann Textsuchen erschweren, insbesondere wenn verschiedene Fälle eines Wortes vorkommen. Um dies zu mildern, können Sie Grep mit dem -i
Flag gepaart mit dem Suchbegriff verwenden:
Rekursive Suche
Grep kann mehrere Dateien oder ganze Verzeichnisse gleichzeitig durchsuchen. Dies ist besonders nützlich, wenn Sie ein Projekt mit mehreren Dateien untersuchen und in einem Verzeichnis nach Vorkommen eines bestimmten Textes suchen möchten. Verwenden Sie beispielsweise den folgenden Befehl, um den Begriff „MakeTechEasier“ im Verzeichnis „sample“ zu finden:
Beachten Sie, dass die Verwendung des -r
Flags Grep dazu zwingt, alle Dateien in Ihrem angegebenen Verzeichnis zu untersuchen, darunter auch andere Dateien als Text. Um diese Situation zu vermeiden, verwenden Sie -I
ebenfalls das Flag:
Identifizieren von Dateien mit bestimmten Zeichenfolgen
Grep zeigt nicht nur an, wo eine Zeichenfolge in Dateien vorkommt, sondern kann auch eine Liste von Dateien generieren, die den gesuchten Text enthalten. Dies ist hilfreich, wenn Sie feststellen möchten, ob eine Datei einen bestimmten Inhalt hat, ohne jede gefundene Instanz anzuzeigen.
Verwenden Sie dazu Grep mit den folgenden Flags -r
und -l
zusammen mit Ihrer Zielzeichenfolge und dem Verzeichnis, das Sie durchsuchen möchten:
Darüber hinaus können Sie Ihren Grep-Befehl in eine Bash-Subshell einbinden, um mehrere Suchbedingungen durchzusetzen. Der folgende Befehl gibt beispielsweise Dateien zurück, die sowohl „Hello“ als auch „MakeTechEasier“ im Verzeichnis „sample“ enthalten:
Aufdecken nicht übereinstimmender Ergebnisse
Neben Standardsuchen kann Grep auch Ergebnisse liefern, die Ihre angegebenen Kriterien ausschließen. Diese Funktion kann sehr nützlich sein, wenn Sie Fehler oder Unregelmäßigkeiten in Ihren Texteingaben erkennen müssen.
Um dies auszuführen, verwenden Sie das -v
Flag in Verbindung mit Ihren bevorzugten Optionen. Beispielsweise durchsucht der folgende Befehl rekursiv alle Dateien im Verzeichnis „/etc/nginx“ und gibt alle Zeilen zurück, die die Zeichenfolge „nginx“ nicht enthalten:
Suche nach Wörtern und Zeilen
Es kann auch sinnvoll sein, Grep anzuweisen, nach ganzen Wörtern oder ganzen Zeilen zu suchen, anstatt nach Zeichenfolgen, die einem bestimmten Muster entsprechen. Dieser Ansatz ist besonders nützlich, wenn eine Zeichenfolge gesucht wird, die in mehreren Wörtern vorkommt. Beispielsweise kann die Suche nach dem Begriff „es“ zahlreiche Fehlalarme liefern, da dieser in vielen anderen Wörtern vorkommt.
Um dies zu beheben, führen Sie Grep mit dem -w
Flag gefolgt vom gewünschten Wort aus:
Anstatt alle Instanzen zurückzugeben, die das Suchmuster enthalten, gibt Grep nur das Wort selbst aus. Dies gilt bei Verwendung des -x
Flags auch für ganze Zeilen, was es besonders nützlich macht, um Ausdrücke oder genaue Zeilen in Konfigurationsdateien zu finden.
Einbinden von Zeilennummern in die Grep-Ausgabe
Zeilennummern spielen beim Debuggen von Code und Überprüfen von Dokumenten eine wichtige Rolle. Sie vereinfachen das Auffinden der Position einer bestimmten Zeile oder Funktion und beschleunigen so Revisionen erheblich.
Grep bietet die Funktion, Zeilennummern in die Ausgabe einzuschließen. Sie können dies aktivieren, indem Sie den Befehl mit dem -n
Flag zusammen mit Ihrem Suchbegriff ausführen:
In Kombination mit UNIX-Pipes können Sie die Ausgabe von Grep verfeinern, sodass nur die Zeilennummern Ihrer Suchergebnisse angezeigt werden. Dieser Ansatz ist besonders nützlich für die Verarbeitung großer Textmengen:
Erweiterte reguläre Ausdrücke mit Grep verwenden
Grep verwendet Basic Regular Expressions (BRE) als primäre Metazeichen zum Abgleichen von Text. Dies ist zwar für verschiedene Aufgaben funktional, kann aber für Benutzer als einschränkend empfunden werden, insbesondere bei der Untersuchung von Mustergruppen.
Um die Funktionalität zu erweitern, integrieren viele Grep-Implementierungen das -E
Flag, um die Analyse erweiterter regulärer Ausdrücke (ERE) zu ermöglichen. Beispielsweise erfordert der folgende Befehl das -E
Flag:
Darüber hinaus verfügt Grep über einen speziellen Modus, der Regex-Funktionen vollständig eliminiert. Um ihn zu aktivieren, führen Sie den Befehl mit dem -F
Flag gefolgt von einer einfachen Zeichenfolge aus:
Einschließen umgebender Zeilen in die Grep-Ausgabe
Die Stärke von Grep liegt darin, aufzudecken, wo Text in Ihren Eingaben oder Dateien vorkommt. Allerdings reicht es bei der Fehlerbehebung möglicherweise nicht aus, nur die genaue Position anzuzeigen. Der Kontext rund um eine Zeichenfolge, wie er in Absturzprotokollen zu finden ist, kann oft wichtige Erkenntnisse liefern.
Um zusätzlichen Kontext auszudrucken, können Sie Grep mit dem -C
Flag und der Anzahl der Zeilen ausführen, die Sie vor und nach Ihrem Suchergebnis anzeigen möchten. Um beispielsweise fünf Zeilen um Ihre Zielzeichenfolge herum anzuzeigen, verwenden Sie den folgenden Befehl:
Sie können Ihre Ergebnisse auch anpassen, indem Sie mithilfe der Flags und selektiv nur die vorhergehenden oder folgenden Zeilen drucken -B
. -A
Der folgende Befehl zeigt beispielsweise die zehn Zeilen an, die nach Ihrem Suchbegriff kommen:
Nachdem Sie nun über die grundlegenden Kenntnisse von Grep und dessen Verwendung für allgemeine Aufgaben verfügen, können Sie tiefer in die Befehlszeile und das breitere UNIX-Ökosystem eintauchen. Erfahren Sie mehr darüber, indem Sie lernen, wie Sie sed in Linux für eine noch leistungsfähigere Textverarbeitung verwenden.
Bildnachweis: Alejandro Escamilla via Unsplash . Alle Änderungen und Screenshots von Ramces Red.
Schreibe einen Kommentar