home-harmening:kommandoreferenz:dateiverwaltung:grep

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.

 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:

 grep "Fehler" logfile.txt 

→ Sucht nach dem Wort „Fehler“ in 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

3.1 Einfache Suche

 grep "root" /etc/passwd 

→ Sucht nach „root“ in der Datei /etc/passwd.

3.2 Groß-/Kleinschreibung ignorieren (-i)

 grep -i "error" logfile.txt 

→ Findet „error“, „ERROR“, „Error“ usw.

3.3 Umgekehrte Suche (-v)

 grep -v "192.168.1.1" access.log 

→ Zeigt alle Zeilen, die nicht „192.168.1.1“ enthalten.

3.4 Rekursive Suche in Verzeichnissen (-r)

 grep -r "TODO" /home/user/projekt 

→ Durchsucht alle Dateien in /home/user/projekt nach „TODO“.

3.5 Anzahl der Treffer (-c)

 grep -c "error" logfile.txt 

→ Gibt nur die Anzahl der Treffer aus.

3.6 Zeilennummern anzeigen (-n)

 grep -n "MainFunction" code.c 

→ Gibt Zeilennummern aus, wo „MainFunction“ in code.c steht.

3.7 Nur Dateinamen mit Treffern anzeigen (-l)

 grep -l "password" *.txt 

→ Zeigt nur die Namen der Dateien, die „password“ enthalten.

3.8 Nur das gefundene Wort anzeigen (-o)

 grep -o "WARN[0-9]*" logfile.txt 

→ Gibt nur die gefundenen Warncodes aus (WARN123, WARN456…).

3.9 Ganze Wörter suchen (-w)

 grep -w "is" text.txt 

→ Findet „is“, aber nicht „this“ oder „his“.

3.10 Kontext um Treffer anzeigen (-A, -B, -C)

 grep -A 3 "ERROR" logfile.txt 

→ Zeigt die Zeile mit „ERROR“ und die 3 Zeilen danach.

 grep -B 2 "Login failed" auth.log 

→ Zeigt die Zeile mit „Login failed“ und die 2 Zeilen davor.

 grep -C 2 "Critical" system.log 

→ Zeigt die Treffer plus 2 Zeilen davor und danach.

Die -E Option erlaubt erweiterte reguläre Ausdrücke (entspricht egrep). Regulärer Ausdruck Bedeutung . Beliebiges Zeichen (außer Zeilenumbruch)

$ 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`.

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.

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.