Linux-Befehle · 11 min read · Sep 12, 2025
Wie man grep verwendet, um nach Zeichenfolgen in Dateien in der Linux-Shell zu suchen

Der GREP-Befehl unter Linux - eine Übersicht
Der grep-Befehl in Linux ist ein leistungsstarkes Textsuchwerkzeug, das es Benutzern ermöglicht, in Dateien oder Textströmen nach bestimmten Mustern zu suchen. Es steht für “ global regular expression print“ und unterstützt die Suche nach einfachen Textzeichenfolgen und komplexeren regulären Ausdrücken. Der Befehl wird oft mit anderen Befehlen kombiniert, um die Ausgabe zu filtern und zu verfeinern. Standardmäßig gibt grep alle Zeilen zurück, die das Muster enthalten. Es bietet jedoch verschiedene Optionen zur Anpassung der Suche, wie z. B. Groß- und Kleinschreibung, Zählen von Vorkommen oder rekursive Suche durch Verzeichnisse. Dies macht es zu einem unverzichtbaren Werkzeug für Systemadministratoren, Entwickler und alle, die mit großen Datenmengen in einer Unix-ähnlichen Umgebung arbeiten.
Der grep-Befehl wird hauptsächlich verwendet, um einen Text oder eine Datei nach Zeilen zu durchsuchen, die eine Übereinstimmung mit den angegebenen Wörtern/Zahlen enthalten. Standardmäßig zeigt grep die übereinstimmenden Zeilen an, und es kann verwendet werden, um nach Zeilen von Text zu suchen, die mit einem oder mehreren regulären Ausdrücken übereinstimmen, und es gibt nur die übereinstimmenden Zeilen aus.
Voraussetzungen
Der grep-Befehl ist Teil der Basis-Utils jeder Linux-Distribution, sodass er standardmäßig auf AlmaLinux, CentOS, Debian, Linux Mint, Ubuntu, RHEL und RockyLinux vorinstalliert ist.
Die grundlegende Syntax des grep-Befehls
Die grundlegende Syntax des grep-Befehls lautet wie folgt:
grep 'word' filename
grep 'word' file1 file2 file3
grep 'string1 string2' filename
cat otherfile | grep 'something'
command | grep 'something'
command option1 | grep 'data'
grep --color 'data' fileNameSo verwenden Sie den grep-Befehl zur Suche in einer Datei
Im ersten Beispiel werde ich nach dem Benutzer “tom” in der Linux-Passwd-Datei suchen. Um die /etc/passwd-Datei nach dem Benutzer “tom” zu durchsuchen, müssen Sie den folgenden Befehl eingeben:
grep tom /etc/passwdHier ist die Beispielausgabe:
tom:x:1000:1000:tom,,,:/home/tom:/bin/bashSie haben die Möglichkeit, grep anzuweisen, die Groß- und Kleinschreibung zu ignorieren, d. h. abc, Abc, ABC und alle möglichen Kombinationen mit der -i-Option zu übereinstimmen, wie unten gezeigt:
grep -i "tom" /etc/passwdRekursive Verwendung von grep
Wenn Sie eine Menge Textdateien in einer Verzeichnisstruktur haben, z. B. die Apache-Konfigurationsdateien in /etc/apache2/, und Sie möchten die Datei finden, in der ein bestimmter Text definiert ist, verwenden Sie die -r-Option des grep-Befehls, um eine rekursive Suche durchzuführen. Dies führt eine rekursive Suchoperation durch Dateien nach der Zeichenfolge “197.167.2.9” (wie unten gezeigt) im Verzeichnis /etc/apache2/ und allen seinen Unterverzeichnissen durch:
grep -r "mydomain.com" /etc/apache2/Alternativ kann der folgende Befehl verwendet werden:
grep -R "mydomain.com" /etc/apache2/Hier sind die Beispielausgaben für eine ähnliche Suche auf einem Nginx-Server:
grep -r "mydomain.com" /etc/nginx/
/etc/nginx/sites-available/mydomain.com.vhost: if ($http_host != "www.mydomain.com") {Hier würden Sie das Ergebnis für mydomain.com in einer eigenen Zeile sehen, die dem Namen der Datei (zum Beispiel /etc/nginx/sites-available/mydomain.com.vhost) vorangestellt ist, in der es gefunden wurde. Die Einbeziehung der Dateinamen in die Ausgabedaten kann leicht unterdrückt werden, indem die -h-Option verwendet wird (wie unten erklärt): grep -h -R “mydomain.com” /etc/nginx/. Hier ist die Beispielausgabe:
grep -r "mydomain.com" /etc/nginx/
if ($http_host != "www.mydomain.com") {Verwendung von grep zur Suche nur nach Wörtern
Wenn Sie nach abc suchen, wird grep alle möglichen Dinge übereinstimmen, z. B. kbcabc, abc123, aarfbc35 und viele weitere Kombinationen, ohne die Wortgrenzen zu beachten. Sie können den grep-Befehl zwingen, nur die Zeilen auszuwählen, die Übereinstimmungen zu ganzen Wörtern enthalten (die nur das Wort abc übereinstimmen), wie unten gezeigt:
grep -w "abc" file.txtBeispiel:

Verwendung von grep zur Suche nach zwei verschiedenen Wörtern
Um nach zwei verschiedenen Wörtern zu suchen, müssen Sie den egrep-Befehl wie unten gezeigt verwenden:
egrep -w 'word1|word2' /path/to/fileZählen von Zeilen für übereinstimmende Wörter
Der grep-Befehl hat die Fähigkeit, die Anzahl der Übereinstimmungen eines bestimmten Musters für jede Datei mit der -c (count)-Option zu melden (wie unten gezeigt):
grep -c 'word' /path/to/fileDarüber hinaus können Benutzer die ‘-n’-Option verwenden, um jeder Ausgabzeile die Nummer der Zeile in der Textdatei voranzustellen, aus der sie stammt (wie unten gezeigt):
grep -n 'root' /etc/passwdHier sind die Beispielausgaben:
1:root:x:0:0:root:/root:/bin/bash
Grep-Invertierung der Übereinstimmung
Benutzer können die -v-Option verwenden, um die Übereinstimmung umzukehren, was bedeutet, dass nur die Zeilen übereinstimmen, die das angegebene Wort nicht enthalten. Zum Beispiel, um alle Zeilen auszudrucken, die das Wort par nicht enthalten, verwenden Sie den folgenden Befehl:
grep -v par /path/to/fileSo listen Sie nur die Namen der übereinstimmenden Dateien auf
Sie müssen die -l-Option verwenden, um Dateinamen aufzulisten, deren Inhalte ein bestimmtes Wort erwähnen, zum Beispiel das Wort ‘primary’, mit dem folgenden Befehl:
grep -l 'primary' *.cSchließlich haben Sie die Möglichkeit, grep anzuweisen, die Ausgabe in bestimmten Farben anzuzeigen, indem Sie den folgenden Befehl verwenden:
grep --color root /etc/passwdHier sind die Beispielausgaben:
So machen Sie den grep-Befehl, um mehrere Suchmuster zu behandeln
Es könnte Situationen geben, in denen Sie mehrere Muster in einer bestimmten Datei (oder einer Gruppe von Dateien) suchen möchten. In solchen Szenarien sollten Sie die ‘-e‘-Befehlszeilenoption verwenden, die grep bereitstellt.
Wenn Sie beispielsweise nach den Wörtern “how”, “to” und “forge” in allen Textdateien in Ihrem aktuellen Arbeitsverzeichnis suchen möchten, dann können Sie dies wie folgt tun:
grep -e how -e to -e forge *.txtHier ist der Befehl in Aktion:
Die ‘-e‘-Befehlszeilenoption hilft auch in Szenarien, in denen das Muster mit einem Bindestrich (-) beginnt. Wenn Sie beispielsweise nach “-how” suchen möchten, wird der folgende Befehl nicht hilfreich sein:
grep -how *.txtEs ist, wenn Sie die -e-Befehlszeilenoption verwenden, dass der Befehl versteht, wonach Sie in diesem Fall suchen:
grep -e -how *.txtHier sind beide Befehle in Aktion:
So begrenzen Sie die grep-Ausgabe auf eine bestimmte Anzahl von Zeilen
Falls Sie die grep-Ausgabe auf eine bestimmte Anzahl von Zeilen begrenzen möchten, können Sie dies mit der ‘-m‘-Befehlszeilenoption tun. Wenn Sie beispielsweise nach dem Wort “how” in testfile1.txt suchen möchten, das die folgenden Zeilen enthält:
Aber die Anforderung ist, dass grep die Suche nach 3 Zeilen, die das gesuchte Muster enthalten, stoppen soll. Um dies zu tun, können Sie den folgenden Befehl ausführen:
grep "how" -m3 testfile1.txtHier ist der Befehl in Aktion:
Weiter geht’s, hier ist, was die Man-Seite des Befehls sagt:
Wenn die Eingabe die Standard-Eingabe von einer regulären Datei ist und NUM übereinstimmende Zeilen ausgegeben werden, stellt grep sicher, dass die Standard-Eingabe direkt nach der letzten übereinstimmenden Zeile positioniert ist, bevor sie beendet wird, unabhängig von der Anwesenheit von nachfolgenden Kontextzeilen. Dies ermöglicht einem aufrufenden Prozess, eine Suche fortzusetzen.Wenn Sie also ein Bash-Skript haben, das eine Schleife hat, und Sie möchten pro Schleifeniteration eine Übereinstimmung abrufen, dann wird ‘grep -m1’ das Notwendige tun.
So lassen Sie grep Muster aus einer Datei abrufen
Wenn Sie möchten, können Sie auch den grep-Befehl anweisen, Muster aus einer Datei abzurufen. Die -f-Befehlszeilenoption des Werkzeugs ermöglicht dies.
Wenn Sie beispielsweise in allen .txt-Dateien im aktuellen Verzeichnis nach den Wörtern “how” und “to” suchen möchten, aber diese Eingabestrings über eine Datei mit dem Namen “input” bereitstellen möchten, dann können Sie dies wie folgt tun:
grep -f input *.txtHier ist der Befehl in Aktion:
So lassen Sie grep nur die Zeilen anzeigen, die das Suchmuster vollständig übereinstimmen
Bis jetzt haben wir gesehen, dass grep standardmäßig vollständige Zeilen übereinstimmt und anzeigt, die Suchmuster enthalten. Aber wenn die Anforderung darin besteht, dass grep nur die Zeilen anzeigt, die das gesuchte Muster vollständig übereinstimmen, dann kann dies mit der ‘-x’-Befehlszeilenoption erreicht werden.
Wenn die testfile1.txt-Datei beispielsweise die folgenden Zeilen enthält:
Und das Muster, das Sie suchen möchten, ist “how are you?”. Um sicherzustellen, dass grep nur die Zeilen anzeigt, die dieses Muster vollständig übereinstimmen, verwenden Sie es wie folgt:
grep -x "how are you?" *.txtHier ist der Befehl in Aktion:
So zwingen Sie grep, nichts in der Ausgabe anzuzeigen
Es könnte Situationen geben, in denen Sie nicht möchten, dass der grep-Befehl etwas in der Ausgabe produziert. Stattdessen möchten Sie nur wissen, ob eine Übereinstimmung basierend auf dem Exit-Status des Befehls gefunden wurde. Dies kann mit der -q-Befehlszeilenoption erreicht werden.
Während die -q-Option die Ausgabe stummschaltet, kann der Exit-Status des Werkzeugs mit dem Befehl ‘echo $?’ bestätigt werden. Im Fall von grep gibt der Befehl den Status ‘0’ zurück, wenn er erfolgreich ist (d. h. eine Übereinstimmung wurde gefunden), während er mit dem Status ‘1’ zurückkehrt, wenn keine Übereinstimmung gefunden wurde.
Der folgende Screenshot zeigt sowohl die erfolgreichen als auch die erfolglosen Szenarien:

So lassen Sie grep die Namen von Dateien anzeigen, die das Suchmuster nicht enthalten
Standardmäßig zeigt der grep-Befehl die Namen von Dateien an, die das Suchmuster enthalten (sowie übereinstimmende Zeilen). Dies ist ganz logisch, da das von diesem Werkzeug erwartet wird. Es könnte jedoch Fälle geben, in denen die Anforderung darin bestehen könnte, die Namen der Dateien zu erhalten, die das gesuchte Muster nicht enthalten.
Dies ist auch mit grep möglich - die -L-Option ermöglicht dies. Um beispielsweise alle Textdateien im aktuellen Verzeichnis zu finden, die das Wort “how” nicht enthalten, können Sie den folgenden Befehl ausführen:
grep -L "how" *.txtHier ist der Befehl in Aktion:
So unterdrücken Sie Fehlermeldungen, die von grep erzeugt werden
Sie können grep zwingen, alle Fehlermeldungen, die es in der Ausgabe anzeigt, zu unterdrücken, wenn Sie möchten. Dies kann mit der -s-Befehlszeilenoption erfolgen. Betrachten Sie beispielsweise das folgende Szenario, in dem grep Fehler/Warnungen im Zusammenhang mit dem Verzeichnis erzeugt, auf das es stößt:
In einem solchen Szenario hilft die -s-Befehlszeilenoption. Siehe unten.
So können Sie sehen, dass die Fehler/Warnungen stummgeschaltet wurden.
So lassen Sie grep rekursiv Verzeichnisse durchsuchen
Wie aus dem Beispiel im vorherigen Punkt hervorgeht, führt der grep-Befehl standardmäßig keine rekursive Suche durch. Um sicherzustellen, dass Ihre grep-Suche rekursiv ist, verwenden Sie die -d-Befehlszeilenoption und übergeben Sie den Wert ‘recurse’ an sie.
grep -d recurse "how" *Hinweis 1 : Die verzeichnisbezogene Fehlermeldung/Warnung, die wir im vorherigen Punkt besprochen haben, kann auch mit der -d-Option stummgeschaltet werden - alles, was Sie tun müssen, ist, den Wert ‘skip’ an sie zu übergeben.
Hinweis 2 : Verwenden Sie die ‘–exclude-dir=[DIR]’-Option, um Verzeichnisse, die dem Muster DIR entsprechen, von rekursiven Suchen auszuschließen.
So lassen Sie grep Dateinamen mit NULL-Zeichen beenden
Wie bereits besprochen, wird die -l-Befehlszeilenoption von grep verwendet, wenn Sie möchten, dass das Werkzeug nur Dateinamen in der Ausgabe anzeigt. Zum Beispiel:
Jetzt sollten Sie wissen, dass jeder Name in der obigen Ausgabe durch ein Zeilenumbruchzeichen getrennt/abgeschlossen ist. So können Sie dies überprüfen:
Leiten Sie die Ausgabe in eine Datei um und drucken Sie dann den Inhalt der Datei:
So bestätigt die Ausgabe des cat-Befehls das Vorhandensein eines Zeilenumbruchzeichens zwischen den Dateinamen.
Aber wie Sie vielleicht schon wissen, kann das Zeilenumbruchzeichen auch Teil eines Dateinamens sein. Wenn Sie also mit Fällen umgehen, in denen Dateinamen ein Zeilenumbruchzeichen enthalten und durch Zeilenumbrüche getrennt/abgeschlossen sind, wird es schwierig, mit der grep-Ausgabe zu arbeiten (insbesondere beim Zugriff auf die Ausgabe über ein Skript).
Es wäre gut, wenn das trennende/abschließende Zeichen kein Zeilenumbruch wäre. Nun, Sie werden froh sein zu wissen, dass grep eine Befehlszeilenoption -Z bereitstellt, die sicherstellt, dass Dateinamen von einem NULL-Zeichen und nicht von einem Zeilenumbruch gefolgt werden.
So wird in unserem Fall der Befehl:
grep -lZ "how" *.txtSo haben wir das Vorhandensein des NULL-Zeichens bestätigt:
Folgendes ist eine verwandte Befehlszeilenoption, die Sie kennen sollten:
-z, --null-data
Behandeln Sie die Eingabe als eine Menge von Zeilen, die jeweils durch ein Null-Byte (das ASCII-NUL-Zeichen) anstelle eines Zeilenumbruchs beendet werden. Wie die -Z- oder --null-Option kann diese Option mit Befehlen wie sort -z verwendet werden, um beliebige Dateinamen zu verarbeiten.So verwenden Sie GREP, um Fehler in Protokolldateien zu finden
Grep ist das Schweizer Taschenmesser des Linux-Administrators, wenn es darum geht, Fehler in Diensten zu debuggen. Die meisten Linux-Dienste haben Protokolldateien, in denen sie Fehler melden. Diese Protokolldateien können riesig sein, und grep ist ein vielseitiger und schneller Befehl, um z. B. die IP-Adresse eines verbindenden Systems, eine Fehlermeldung oder die E-Mail-Adresse eines betroffenen Mailbenutzers in der mail.log zu suchen.
Beispiele:
Suchen Sie nach Verbindungen, die mit einer bestimmten E-Mail-Adresse verbunden sind. Hier ist ‘[email protected]’ in der Protokolldatei des Servers mail.log.
grep [email protected] /var/log/mail.logErgebnis:
Aug 22 09:45:10 mail dovecot: pop3-login: Login: user=<[email protected]>, method=PLAIN, rip=192.168.0.112, lip=78.46.229.46, mpid=17596, TLS, session=<3uoa5ffQovld3Uep>
Aug 22 09:45:10 mail dovecot: pop3([email protected])<17596><3uoa5ffQovld3Uep>: Disconnected: Logged out top=0/0, retr=1/6647, del=1/1, size=6630
Aug 22 09:45:10 mail dovecot: pop3-login: Login: user=<[email protected]>, method=PLAIN, rip=192.168.0.112, lip=78.46.229.46, mpid=17673, TLS, session=
Aug 22 09:45:10 mail dovecot: pop3([email protected])<17673>: Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
Aug 22 09:45:10 mail dovecot: pop3-login: Login: user=<[email protected]>, method=PLAIN, rip=192.168.0.112, lip=78.46.229.46, mpid=17868, TLS, session=
Aug 22 09:45:10 mail dovecot: pop3([email protected])<17868>: Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
Aug 22 09:45:10 mail dovecot: pop3-login: Login: user=<[email protected]>, method=PLAIN, rip=192.168.0.112, lip=78.46.229.46, mpid=17964, TLS, session=
Aug 22 09:45:10 mail dovecot: pop3([email protected])<17964>: Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
Aug 22 09:45:10 mail postfix/smtpd[6932]: NOQUEUE: reject: RCPT from unknown[1.2.3.4]: 504 5.5.2 <1.2.3.4>: Helo command rejected: need fully-qualified hostname; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<1.2.3.4> Um eine Protokolldatei kontinuierlich auf Verbindungen für diese E-Mail-Adresse zu überwachen, kombinieren Sie die Befehle tail und grep wie folgt:
tail -f /var/log/mail.log | grep [email protected]Um die Überwachungsfunktion zu beenden, drücken Sie die Tasten [strg] + c.
Weitere GREP-Befehlsbeispiele
Sie finden noch mehr Beispiele für die Verwendung dieses Linux-Befehls in unserem zweiten GREP-Befehls-Tutorial.
- Wie man eine Mustersuche in Dateien mit Grep durchführt
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.