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:
Sucht nach dem Wort „Fehler“ in logfile.txt.

 grep "Fehler" logfile.txt 


OptionBeschreibung
-iIgnoriert Groß- und Kleinschreibung
-vZeigt alle Zeilen, die nicht das Muster enthalten
-rDurchsucht alle Dateien in einem Verzeichnis rekursiv
-cGibt die Anzahl der Treffer (Zeilen) aus
-nZeigt die Zeilennummern der Treffer an
-lZeigt nur die Namen der Dateien an, die das Muster enthalten
-oGibt nur den gefundenen Text aus (nicht die ganze Zeile)
-wSucht nach exakten Wortübereinstimmungen
-A NZeigt N Zeilen nach dem Treffer an
-B NZeigt N Zeilen vor dem Treffer an
-C NZeigt N Zeilen vor und nach dem Treffer an
–color=autoHebt Treffer farbig hervor



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"



Die -E Option erlaubt erweiterte reguläre Ausdrücke (entspricht egrep).

Regulärer AusdruckBedeutung
.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\barFindet „foo“ oder „bar“


Beispiele für reguläre Ausdrücke

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:

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.