Grep oder Global Regular Expression Print ist ein äußerst nützlicher Linux-Befehl zum Auffinden übereinstimmender Muster. Es kann Dateien und Verzeichnisse durchsuchen und auch Eingaben von Befehlen lesen. Es sucht mit Regex oder regulären Ausdrücken und gibt Zeilen aus einer Datei aus, die dem angegebenen Muster entsprechen.
In diesem Beitrag sehen wir uns an, wie man den Grep-Befehl unter Linux verwendet. Die hier besprochenen Befehle wurden auf Ubuntu 20.04 getestet. Dieselben Grep-Befehle funktionieren auch für Debian, Mint, Fedora und CentOS.
Grep-Befehl installieren
Bei den meisten Linux-Distributionen, einschließlich Ubuntu 20.04 LTS, ist grep installiert. Falls auf Ihrem System Grep nicht installiert ist, können Sie es mit dem folgenden Befehl im Terminal installieren:
$ Sudo apt-get install grep
Grep-Befehlssyntax
Die grundlegende Syntax des Grep-Befehls lautet wie folgt:
$ grep [options] PATTERN [FILE...]
Grep-Befehl verwenden
Ein Wort in einer Datei finden
Mit Grep können Sie jedes Wort in einer bestimmten Datei suchen. Die Syntax wäre:
$ grep <word> <filename>
Der folgende Befehl sucht beispielsweise nach dem Wort „Donuts“ in der Datei „Donuts.txt“.
$ grep Donuts Donuts.txt
Ein Wort in mehreren Dateien finden
Sie können auch in mehreren Dateien nach einem bestimmten Wort suchen.
$ grep <word> <filename1> < filename2>
Der folgende Befehl sucht beispielsweise nach dem Wort „Donuts“ sowohl in „Donuts.txt“ als auch in „cakes.txt“.
$ grep Donuts Donuts.txt cakes.txt
Groß-/Kleinschreibung ignorieren
Grep führt standardmäßig Groß- und Kleinschreibung durch, das heißt, es behandelt „Donut“ und „Donuts“ unterschiedlich. Wenn wir den obigen Befehl erneut mit „Donuts“ ausführen, sehen Sie diesmal keine Ausgabe.
$ grep donuts Donuts.txt
Um die Groß-/Kleinschreibung zu ignorieren, müssen Sie „-i hinzufügen ” zu Ihrem Befehl wie folgt:
$ grep –i <word> <filename>
Suchen einer Datei nach Erweiterung in einem Verzeichnis
Sie können eine Datei in einem bestimmten Verzeichnis auch anhand ihrer Erweiterung finden. Verwenden Sie dazu die folgende Syntax:
$ ls ~/<directory> | grep .<file type>
Um beispielsweise alle „.jpeg“-Dateien im Ordner „Downloads“ zu finden, lautet der Befehl:
$ ls ~/Downloads | grep .jpeg
Drucken von Linien, die keinem Muster entsprechen
Mit Grep können Sie auch die Zeilen drucken, die nicht zu Ihrem Muster passen, indem Sie „-v hinzufügen “ zu Ihrem Befehl. Verwenden Sie dazu die folgende Syntax:
$ grep -v <word> <filename>
Beispielsweise druckt der folgende Befehl alle Zeilen außer derjenigen, die das Wort „Donuts“ enthält.
Nur das passende Wort drucken
Standardmäßig gibt grep die gesamte Zeile aus, die das Muster enthält. Um nur das passende Wort zu drucken, fügen Sie „-o hinzu ” zu Ihrem Befehl.
$ grep -o <word> <filename>
Beispielsweise druckt der folgende Befehl nur das Wort „Donuts“ anstatt die gesamte Zeile aus der Datei „Donuts.txt“.
Druckzeilennummer des übereinstimmenden Musters und der Zeile
Standardmäßig gibt grep die gesamte Zeile aus, die das Muster enthält. Um sowohl die Zeilennummer als auch die Zeile mit dem passenden Wort zu drucken, fügen Sie „-n hinzu ” zu Ihrem Befehl.
$ grep -n <word> <filename>
Der folgende Befehl gibt beispielsweise sowohl die Zeilennummer als auch die Zeile aus, die das Wort „Donuts“ enthält.
$ grep -n Donuts Donuts.txt
Drucken von Dateinamen, die einem Muster entsprechen
Um alle Dateien in Ihrem aktuellen Verzeichnis zu drucken, die Ihrem Muster entsprechen, verwenden Sie die folgende Syntax:
$ grep -l “<word>” *
Der folgende Befehl gibt beispielsweise alle Dateien aus, die das Wort „Hallo“ enthalten:
$ grep -l “Hello” *
Das ganze übereinstimmende Wort drucken
Standardmäßig gibt grep alle Wörter aus, die Ihrem Muster entsprechen, auch wenn sie Teil eines Wortes sind. Sehen Sie sich das Bild unten an.
Wir suchten nach der Zeichenfolge „do “ und kann alle Zeilen sehen, die „do“ enthalten “. Um das genaue Wort zu finden, fügen Sie „-w hinzu ” zu Ihrem Befehl.
$ grep –w <word> <filename>
Um beispielsweise nach dem genauen Wort „tun“ zu suchen “ in der Donuts.txt-Datei wäre der Befehl:
$ grep -w do Donuts.txt
Wie Sie sehen können, wird jetzt nur noch die Zeile gedruckt, die genau das Wort „do“ enthält “.
Übereinstimmende Zeilen, die mit einem bestimmten Wort beginnen
Um Zeilen zu drucken, die mit einem bestimmten Wort beginnen, fügen Sie „^ hinzu ” zu Ihrem Befehl.
$ grep ^<word> <filename>
Der folgende Befehl gibt beispielsweise alle Zeilen aus, die mit „Th beginnen “.
$ grep ^Th Donuts.txt
Passende Linien, die mit einem Muster enden
Um Zeilen zu drucken, die mit einem bestimmten Muster enden, fügen Sie „$ hinzu ” zu Ihrem Befehl.
$ grep <word>$ <filename>
Der folgende Befehl gibt beispielsweise alle Zeilen aus, die mit „t enden “.
$ grep t$ Donuts.txt
Übereinstimmungszeilen, die bestimmte Buchstaben enthalten
Wenn Sie nach Zeilen suchen möchten, die einen oder mehrere Buchstaben enthalten, verwenden Sie die folgende Syntax:
$ grep “[<letters>]” <filename>
Der folgende Befehl gibt beispielsweise alle Zeilen aus, die einen beliebigen Buchstaben von „a“ bis „f“ enthalten.
$ grep “[a-f]” Donuts.txt
Rekursive Suche
Um alle Dateien in einem Verzeichnis und Unterverzeichnis nach einem bestimmten Muster oder Wort zu durchsuchen, verwenden Sie:
$ grep -R <word> <path>
Der folgende Befehl listet beispielsweise alle Dateien auf, die das Wort „Hello“ im Documents-Verzeichnis enthalten. In der folgenden Ausgabe sehen Sie die Dateipfade zusammen mit den passenden Wörtern.
$ grep -R “Hello” /home/maryam/Documents
Spezifische Zeilen vor/nach den übereinstimmenden Wörtern drucken
Standardmäßig druckt Grep nur die Zeile, die mit dem bestimmten Muster übereinstimmt. Mit -A Option in Grep können Sie auch einige Zeilen vor oder nach den übereinstimmenden Wörtern einfügen.
Druckzeilen nach dem Spiel
Zum Drucken der Zeilen, die die übereinstimmenden Wörter einschließlich N enthalten Anzahl Zeilen nach den Treffern:
$ grep -A <N> <word> <filename>
Zum Beispiel druckt der folgende Befehl die Zeile, die das Wort „Hölle“ enthält, zusammen mit 1 Zeile danach.
$ grep -A 1 hell Donuts.txt
Druckzeilen vor dem Spiel
Zum Drucken der Zeilen, die die übereinstimmenden Wörter einschließlich N enthalten Anzahl Zeilen vor den Treffern:
$ grep -B <N> <word> <filename>
Beispielsweise druckt der folgende Befehl die Zeile mit dem Wort „hell“ zusammen mit 1 Zeile davor.
$ grep -B 1 hell Donuts.txt
Druckzeilen vor und nach dem Spiel
Zum Drucken der Zeilen, die die übereinstimmenden Wörter einschließlich N enthalten Anzahl der Zeilen vor und nach den Spielen:
$ grep -C <N> <word> <filename>
Beispielsweise druckt der folgende Befehl die Zeile mit dem Wort „Hölle“ zusammen mit 1 Zeile davor und danach.
$ grep -C 1 hell Donuts.txt
Zählen der Anzahl der Übereinstimmungen
Mit dem -c Option mit grep können Sie die Zeilen zählen, die einem bestimmten Muster entsprechen. Denken Sie daran, dass nur die Anzahl der Zeilen und nicht die Anzahl der übereinstimmenden Wörter abgeglichen wird.
$ grep -c <word> <filename>
Der folgende Befehl gibt beispielsweise die Anzahl der Zeilen aus, die das Wort „Donuts“ enthalten.
$ grep -c Donuts Donuts.txt
Beachten Sie, dass unsere Datei „Donuts.txt“ 4 „Donuts“ enthält, aber -c die Anzahl nur als 3 ausgegeben hat. Dies passiert, weil es die Anzahl der Zeilen statt der Anzahl der Übereinstimmungen zählt.
Verwenden Sie für weitere Informationen zu grep den folgenden Befehl:
$ grep --help
oder besuchen Sie die Manpage mit dem folgenden Befehl:
$ man grep
Dadurch gelangen Sie zur Handbuchseite von Grep.
Das ist alles, was dazu gehört! In diesem Beitrag haben wir die grundlegende Syntax und Verwendung des Befehls grep in Linux erklärt. Wir haben auch einige Befehlszeilenoptionen durchgesehen, um seine Nützlichkeit zu erweitern. Wenn Sie einige andere Verwendungen des Grep-Befehls in Linux kennen, die wir übersehen haben, würden wir gerne in den Kommentaren unten etwas darüber erfahren.
Lesen Sie diesen verwandten Artikel, um herauszufinden, wie Sie Dateien und Verzeichnisse in Linux finden können.