Website-Suche

Die 6 besten CLI-Tools zum Durchsuchen von Klartextdaten mit regulären Ausdrücken


In diesem Leitfaden werden einige der besten Befehlszeilentools vorgestellt, die zum Suchen nach übereinstimmenden Zeichenfolgen oder Mustern in Textdateien verwendet werden. Diese Tools werden in der Regel zusammen mit regulären Ausdrücken – abgekürzt als REGEX – verwendet, bei denen es sich um eindeutige Zeichenfolgen zur Beschreibung eines Suchmusters handelt.

Lassen Sie uns ohne weitere Umschweife eintauchen.

1. grep-Befehl

An erster Stelle steht das Dienstprogramm grep – ist ein Akronym für Global Regular Expression Print, ein leistungsstarkes Befehlszeilentool, das sich bei der Suche nach einer bestimmten Zeichenfolge oder einem Muster in einer Datei als nützlich erweist.

Grep wird standardmäßig mit modernen Linux-Distributionen ausgeliefert und gibt Ihnen die Flexibilität, verschiedene Suchergebnisse zurückzugeben. Mit grep können Sie eine Vielzahl von Funktionen ausführen, wie zum Beispiel:

  • Suchen Sie nach Zeichenfolgen oder übereinstimmenden Mustern in einer Datei.
  • Suchen Sie nach Zeichenfolgen oder übereinstimmenden Mustern in gezippten Dateien.
  • Zählen Sie die Anzahl der Zeichenfolgenübereinstimmungen.
  • Drucken Sie die Zeilennummern, die die Zeichenfolge oder das Muster enthalten.
  • Suchen Sie rekursiv nach der Zeichenfolge in Verzeichnissen.
  • Führen Sie eine Rückwärtssuche durch (d.h. Ergebnisse von Zeichenfolgen anzeigen, die nicht den Suchkriterien entsprechen).
  • Ignorieren Sie die Groß-/Kleinschreibung bei der Suche nach Zeichenfolgen.

Die Syntax für die Verwendung des Befehls grep ist recht einfach:

$ grep pattern FILE

Um beispielsweise in einer Datei nach der Zeichenfolge "Linux" zu suchen, z. B. hello.txt die Groß-/Kleinschreibung zu ignorieren, führen Sie den folgenden Befehl aus:

$ grep -i Linux hello.txt

Um weitere Optionen zu erhalten, die Sie mit grep verwenden können, lesen Sie einfach unseren Artikel mit Beispielen für fortgeschrittenere grep-Befehlsbeispiele.

2. sed-Befehl

Sed – kurz für Stream Editor – ist ein weiteres nützliches Befehlszeilenwerkzeug zum Bearbeiten von Text in einer Textdatei. Sed sucht, filtert und ersetzt Zeichenketten in einer bestimmten Datei auf nicht-interaktive Weise.

Standardmäßig druckt der Befehl sed die Ausgabe in STDOUT (Standard Out), was bedeutet, dass das Ergebnis der Ausführung auf dem Terminal gedruckt wird, anstatt in einer Datei gespeichert zu werden.

Der Befehl "Sed" wird wie folgt aufgerufen:

$ sed -OPTIONS command [ file to be edited ]

Um beispielsweise alle Instanzen von 'Unix' durch 'Linux' zu ersetzen, rufen Sie den folgenden Befehl auf:

$ sed 's/Unix/Linux' hello.txt

Wenn Sie die Ausgabe umleiten möchten, anstatt sie auf dem Terminal zu drucken, verwenden Sie das Umleitungszeichen ( > ) wie gezeigt.

$ sed 's/Unix/Linux' hello.txt > output.txt

Die Ausgabe des Befehls wird in der output.txt Datei gespeichert, anstatt auf dem Bildschirm gedruckt zu werden.

Um weitere Optionen zu sehen, die verwendet werden können, schauen Sie sich noch einmal die Manpages an.

$ man sed

3. Ack-Befehl

Ack ist ein schnelles und portables Befehlszeilentool, das in Perl geschrieben wurde. Ack gilt als freundlicher Ersatz für das Dienstprogramm grep und gibt die Ergebnisse auf visuell ansprechende Weise aus.

Der Befehl ack durchsucht die Datei oder das Verzeichnis nach den Zeilen, die die Übereinstimmung mit den Suchkriterien enthalten. Dann hebt es die passende Zeichenkette in den Zeilen hervor.
Ack hat die Fähigkeit, Dateien anhand ihrer Dateierweiterungen und bis zu einem gewissen Grad des Inhalts in den Dateien zu unterscheiden.

Syntax des Befehls Ack:

$ ack [options] PATTERN [FILE...]
ack -f [options] [DIRECTORY...]

Um beispielsweise nach dem Suchbegriff Linux zu suchen, führen Sie Folgendes aus:

$ ack Linux hello.txt

Das Suchwerkzeug ist recht intelligent und wenn keine Datei oder kein Verzeichnis vom Benutzer bereitgestellt wird, durchsucht es das aktuelle Verzeichnis und die Unterverzeichnisse nach dem Suchmuster.

Im folgenden Beispiel wurde keine Datei oder kein Verzeichnis angegeben, aber ack hat die verfügbare Datei automatisch erkannt und nach dem bereitgestellten übereinstimmenden Muster gesucht.

$ ack Linux

Um ack auf Ihrem System zu installieren, führen Sie den folgenden Befehl aus:

$ sudo apt install ack-grep    [On Debian/Ubuntu]
sudo dnf install ack-grep    [On CentOS/RHEL]

4. Awk-Befehl

Awk ist eine vollwertige Skriptsprache und auch ein Textverarbeitungs- und Datenmanipulationstool. Es werden Dateien oder Programme durchsucht, die das Suchmuster enthalten. Wenn die Zeichenfolge oder das Muster gefunden wird, führt awk eine Aktion für die Übereinstimmung oder Linie aus und druckt die Ergebnisse auf STDOUT.

Das AWK-Muster wird in geschweifte Klammern eingeschlossen, während das gesamte Programm in einfache Anführungszeichen gesetzt wird.

Nehmen wir das einfachste Beispiel. Nehmen wir an, Sie drucken das Datum Ihres Systems wie gezeigt aus:

$ date

Angenommen, Sie möchten nur den ersten Wert ausdrucken, d. h. den Wochentag. Leiten Sie in diesem Fall die Ausgabe wie gezeigt in awk weiter:

$ date | awk '{print $1}'

Um nachfolgende Werte anzuzeigen, trennen Sie sie wie gezeigt durch ein Komma:

$ date | awk '{print $1,$2}'

Der obige Befehl zeigt den Wochentag und das Datum des Monats an.

Um weitere Optionen zu erhalten, die Sie mit awk verwenden können, lesen Sie einfach unsere awk-Befehlsserie.

5. Silberner Sucher

Der Silver Searcher ist ein plattformübergreifendes und Opensource-Code-Suchtool, ähnlich wie ack, aber mit einem Schwerpunkt auf Geschwindigkeit. Es macht es Ihnen leicht, in kürzester Zeit nach einer bestimmten Zeichenkette in Dateien zu suchen:

Syntax:

$ ag OPTIONS search_pattern /path/to/file

Um beispielsweise in einer Datei nach der Zeichenfolge "Linux" zu suchen, rufen hello.txt den Befehl auf:

$ ag Linux hello.txt

Weitere Optionen finden Sie in den Manpages:

$ man ag

6. Ripgrep

Schließlich haben wir das Befehlszeilentool ripgrep. Ripgrep ist ein plattformübergreifendes Dienstprogramm zum Durchsuchen von Regex-Mustern. Es ist viel schneller als alle zuvor erwähnten Suchwerkzeuge und durchsucht rekursiv Verzeichnisse nach übereinstimmenden Mustern. In Bezug auf Geschwindigkeit und Leistung sticht kein anderes Tool hervor wie Ripgrep.

Standardmäßig überspringt ripgrep Binärdateien/versteckte Dateien und Verzeichnisse. Beachten Sie auch, dass standardmäßig nicht nach Dateien gesucht wird, die von .gitignore/.ignore/.rgignore-Dateien ignoriert werden.

Mit Ripgrep können Sie auch nach bestimmten Dateitypen suchen. Um Ihre Suche beispielsweise auf Javascript-Dateien zu beschränken, führen Sie Folgendes aus:

$ rg -Tsj

Die Syntax für die Verwendung von ripgrep ist recht einfach:

$ rg [OPTIONS] PATTERN [PATH...]

Zum Beispiel. Um in Dateien, die sich im aktuellen Verzeichnis befinden, nach Instanzen der Zeichenkette 'Linux' zu suchen, führen Sie den folgenden Befehl aus:

$ rg Linux

Um ripgrep auf Ihrem System zu installieren, führen Sie die folgenden Befehle aus:

$ sudo apt install ripgrep      [On Debian/Ubuntu]
sudo pacman -S ripgrep        [On Arch Linux]
sudo zypper install ripgrep   [On OpenSuse]
sudo dnf install ripgrep      [On CentOS/RHEL/Fedora]

Weitere Optionen finden Sie in den Manpages:

$ man rg

Dies sind einige der am weitesten verbreiteten Befehlszeilentools zum Suchen, Filtern und Bearbeiten von Text in Linux. Wenn Sie andere Tools haben, die wir Ihrer Meinung nach ausgelassen haben, teilen Sie uns dies im Kommentarbereich mit.

Verwandte Artikel: