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.
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
| 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 |
Sucht nach „root“ in der Datei /etc/passwd.
grep "root" /etc/passwd
Findet „error“, „ERROR“, „Error“ usw.
grep -i "error" logfile.txt
Zeigt alle Zeilen, die nicht „192.168.1.1“ enthalten.
grep -v "192.168.1.1" access.log
Durchsucht alle Dateien in /home/user/projekt nach „TODO“.
grep -r "TODO" /home/user/projekt
Gibt nur die Anzahl der Treffer aus.
grep -c "error" logfile.txt
Gibt Zeilennummern aus, wo „MainFunction“ in code.c steht.
grep -n "MainFunction" code.c
Zeigt nur die Namen der Dateien, die „password“ enthalten.
grep -l "password" *.txt
Gibt nur die gefundenen Warncodes aus (WARN123, WARN456…).
grep -o "WARN[0-9]*" logfile.txt
Findet „is“, aber nicht „this“ oder „his“.
grep -w "is" text.txt
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"
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“ |
Sucht nach Zeilen, die mit „user“ + 2 Ziffern beginnen (`user01`, `user99`).
grep -E "^user[0-9]{2}" datei.txt
Findet Zeilen mit „error“, „fail“ oder „fatal“.
grep -E "error|fail|fatal" logfile.txt
Findet Muster wie `ABC1234`, `XYZ5678`.
grep -E "[A-Z]{3}[0-9]{4}" data.txt
grep wird oft mit anderen Kommandos kombiniert.
Zeigt nur Firefox-Prozesse.
ps aux | grep "firefox"
Zeigt nur Shell-Skripte (.sh am Ende).
ls -l | grep ".sh$"
Zeigt nur USB-bezogene Meldungen.
dmesg | grep -i "usb"