GREP unter Linux verstehen: Nutzung und Anwendungen

GREP unter Linux verstehen: Nutzung und Anwendungen
Eine Person, die einen Laptop benutzt.

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.txtmit dem folgenden Befehl anzeigen lassen:

Sie können Ihre Textdateien auch nach bestimmten Wörtern suchen:

Grep sucht nach einem Wort in einem Terminal.

Darüber hinaus kann Grep mit UNIX-Pipes kombiniert werden, um mehrere Befehle in einer einzigen Operation zusammenzufassen:

Verwenden von Grep zum Drucken einer gesamten Datei ohne Argumente.

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 lsBefehls direkt an Grep weiterleiten.

Dieser Befehl zeigt beispielsweise alle JPEG-Dateien in Ihrem Download-Verzeichnis an, indem ihre Erweiterungen hervorgehoben werden:

Grep filtert Dateilisten nach Dateierweiterung.

Sie können die Ausgabe erweitern lsund komplexere Mustervergleiche durchführen. Der folgende Befehl listet beispielsweise alle Dateien im aktuellen Verzeichnis auf, die kleiner als 1 MB sind:

Die Fähigkeit von Grep, Text innerhalb größerer Formate abzugleichen.

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.

Die standardmäßige Groß-/Kleinschreibungssensitivität von Grep.

Dies kann Textsuchen erschweren, insbesondere wenn verschiedene Fälle eines Wortes vorkommen. Um dies zu mildern, können Sie Grep mit dem -iFlag gepaart mit dem Suchbegriff verwenden:

Das Flag -i in Grep, das die Groß-/Kleinschreibung deaktiviert.

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:

Die rekursive Funktionalität von Grep zum Durchsuchen mehrerer Dateien.

Beachten Sie, dass die Verwendung des -rFlags Grep dazu zwingt, alle Dateien in Ihrem angegebenen Verzeichnis zu untersuchen, darunter auch andere Dateien als Text. Um diese Situation zu vermeiden, verwenden Sie -Iebenfalls 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 -rund -lzusammen mit Ihrer Zielzeichenfolge und dem Verzeichnis, das Sie durchsuchen möchten:

Grep gibt die Dateipfade der übereinstimmenden Inhalte aus.

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:

Verwenden von Bash-Subshells mit Grep für die Übereinstimmung mehrerer Bedingungen.

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 -vFlag 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:

Verwenden Sie das Invert-Flag, um alles außer einer bestimmten Zeichenfolge abzugleichen.

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 -wFlag gefolgt vom gewünschten Wort aus:

Ausführen einer Ganzwortübereinstimmung mit Grep.

Anstatt alle Instanzen zurückzugeben, die das Suchmuster enthalten, gibt Grep nur das Wort selbst aus. Dies gilt bei Verwendung des -xFlags auch für ganze Zeilen, was es besonders nützlich macht, um Ausdrücke oder genaue Zeilen in Konfigurationsdateien zu finden.

Grep gleicht ganze Textzeilen ab.

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 -nFlag zusammen mit Ihrem Suchbegriff ausführen:

Grep zeigt Zeilennummern für Übereinstimmungen in einer Datei an.

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:

Verwenden von UNIX-Pipes mit Grep zur verfeinerten Ausgabeverarbeitung.

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 -EFlag, um die Analyse erweiterter regulärer Ausdrücke (ERE) zu ermöglichen. Beispielsweise erfordert der folgende Befehl das -EFlag:

Verwenden von erweiterten regulären Ausdrücken mit Grep zum Abgleichen von Mustern.

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 -FFlag gefolgt von einer einfachen Zeichenfolge aus:

Exakte String-Übereinstimmung ohne regulären Ausdruck in Grep.

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 -CFlag 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:

Grep zeigt den umgebenden Kontext für eine übereinstimmende Zeichenfolge an.

Sie können Ihre Ergebnisse auch anpassen, indem Sie mithilfe der Flags und selektiv nur die vorhergehenden oder folgenden Zeilen drucken -B. -ADer folgende Befehl zeigt beispielsweise die zehn Zeilen an, die nach Ihrem Suchbegriff kommen:

Grep druckt Zeilen, die auf die übereinstimmende Zeichenfolge folgen.

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.

Quelle

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert