Dies ist eine alte Version des Dokuments!
grep | Muster in Dateien und Ausgaben suchen
Das Kommando grep (Global Regular Expression Print) wird verwendet, um Textmuster in Dateien oder der Standardausgabe zu durchsuchen.
Es unterstützt einfache Zeichenfolgen, reguläre Ausdrücke und kann sogar rekursiv in Verzeichnissen suchen.
Grundlegende Syntax
grep [OPTIONEN] "MUSTER" DATEI
MUSTER: Das zu suchende Wort oder der reguläre Ausdruck. DATEI: Die Datei(en), in denen gesucht wird. Falls keine Datei angegeben wird, liest grep aus der Standardeingabe (stdin).
Beispiel:
Sucht nach dem Wort „Fehler“ in logfile.txt.
grep "Fehler" logfile.txt
Wichtige Optionen
| Option | Beschreibung |
| -i | Ignoriert Groß- und Kleinschreibung |
| -v | Zeigt alle Zeilen, die nicht das Muster enthalten |
| -r | Durchsucht alle Dateien in einem Verzeichnis rekursiv |
| -c | Gibt die Anzahl der Treffer (Zeilen) aus |
| -n | Zeigt die Zeilennummern der Treffer an |
| -l | Zeigt nur die Namen der Dateien an, die das Muster enthalten |
| -o | Gibt nur den gefundenen Text aus (nicht die ganze Zeile) |
| -w | Sucht nach exakten Wortübereinstimmungen |
| -A N | Zeigt N Zeilen nach dem Treffer an |
| -B N | Zeigt N Zeilen vor dem Treffer an |
| -C N | Zeigt N Zeilen vor und nach dem Treffer an |
| –color=auto | Hebt Treffer farbig hervor |
Beispiele zur Nutzung von grep
Einfache Suche
Sucht nach „root“ in der Datei /etc/passwd.
grep "root" /etc/passwd
Groß-/Kleinschreibung ignorieren (-i)
Findet „error“, „ERROR“, „Error“ usw.
grep -i "error" logfile.txt
mgekehrte Suche (-v)
Zeigt alle Zeilen, die nicht „192.168.1.1“ enthalten.
grep -v "192.168.1.1" access.log
Rekursive Suche in Verzeichnissen (-r)
Durchsucht alle Dateien in /home/user/projekt nach „TODO“.
grep -r "TODO" /home/user/projekt
Anzahl der Treffer (-c)
Gibt nur die Anzahl der Treffer aus.
grep -c "error" logfile.txt
Zeilennummern anzeigen (-n)
Gibt Zeilennummern aus, wo „MainFunction“ in code.c steht.
grep -n "MainFunction" code.c
Nur Dateinamen mit Treffern anzeigen (-l)
Zeigt nur die Namen der Dateien, die „password“ enthalten.
grep -l "password" *.txt
Nur das gefundene Wort anzeigen (-o)
Gibt nur die gefundenen Warncodes aus (WARN123, WARN456…).
grep -o "WARN[0-9]*" logfile.txt
Ganze Wörter suchen (-w)
Findet „is“, aber nicht „this“ oder „his“.
grep -w "is" text.txt
Kontext um Treffer anzeigen (-A, -B, -C)
Zeigt die Zeile mit „ERROR“ und die 3 Zeilen danach.
grep -A 3 "ERROR" logfile.txt
Zeigt die Zeile mit „Login failed“ und die 2 Zeilen davor.
grep -B 2 "Login failed" auth.log
system.log /code>
Zeigt die Treffer plus 2 Zeilen davor und danach.
grep -C 2 "Critical"
Reguläre Ausdrücke mit grep -E (Erweiterte Suche)
Die -E Option erlaubt erweiterte reguläre Ausdrücke (entspricht egrep).
| Regulärer | Ausdruck | Bedeutung |
| . | Beliebiges Zeichen (außer Zeilenumbruch) | |
| Beginn einer Zeile | ||
| $ | Ende einer Zeile | |
| [abc] | Entweder „a“, „b“ oder „c“ | |
| [a-z] | Ein Kleinbuchstabe von „a“ bis „z“ | |
| [ | 0-9] | Kein Ziffernzeichen (0-9) |
|---|---|---|
| * | 0 oder mehr Vorkommen des vorherigen Zeichens | |
| + | 1 oder mehr Vorkommen des vorherigen Zeichens | |
| ? | 0 oder 1 Vorkommen | |
| {n,m} | Zwischen n und m Wiederholungen | |
| foo\ | bar | Findet „foo“ oder „bar“ |
Beispiele für reguläre Ausdrücke
grep -E "^user[0-9]{2}" datei.txt
→ Sucht nach Zeilen, die mit „user“ + 2 Ziffern beginnen (`user01`, `user99`).
grep -E "error|fail|fatal" logfile.txt
→ Findet Zeilen mit „error“, „fail“ oder „fatal“.
grep -E "[A-Z]{3}[0-9]{4}" data.txt
→ Findet Muster wie `ABC1234`, `XYZ5678`.
5. grep mit Pipes (|) kombinieren
grep wird oft mit anderen Kommandos kombiniert:
ps und grep: Laufende Prozesse filtern
ps aux | grep "firefox"
→ Zeigt nur Firefox-Prozesse.
ls und grep: Dateien filtern
ls -l | grep ".sh$"
→ Zeigt nur Shell-Skripte (.sh am Ende).
dmesg und grep: Kernel-Logs durchsuchen
dmesg | grep -i "usb"
→ Zeigt nur USB-bezogene Meldungen.
6. Fazit
grep ist ein extrem nützliches Werkzeug für die Textsuche in Linux. Mit den verschiedenen Optionen kann man gezielt nach bestimmten Mustern suchen und den Kontext der Treffer erweitern.