Benutzer-Werkzeuge

Webseiten-Werkzeuge


sammlung:grep

grep

grep (Global Regular Expression Print) ist ein mächtiges Kommandozeilenwerkzeug zum Durchsuchen von Text nach Mustern. Es wird verwendet, um Dateien oder Ausgaben nach bestimmten Zeichenketten oder regulären Ausdrücken zu filtern und ist unverzichtbar für Log-Analyse, Fehlersuche und Textverarbeitung.

Voraussetzungen

  • Zugriff auf die Linux-Kommandozeile
  • Grundkenntnisse in Bash-Kommandos
  • Optional: Verständnis für reguläre Ausdrücke

Grundlegende Syntax

grep [OPTIONEN] MUSTER [DATEI...]

Häufige Anwendungsfälle

Einfache Textsuche

# In einer Datei suchen
grep "Suchbegriff" datei.txt
 
# In mehreren Dateien suchen
grep "error" *.log
 
# Rekursiv in Verzeichnissen suchen
grep -r "TODO" /pfad/zum/verzeichnis/

Groß-/Kleinschreibung ignorieren

grep -i "fehler" system.log

Nur Dateinamen anzeigen

grep -l "pattern" *.txt

Zeilennummern anzeigen

grep -n "function" script.sh

Invertierte Suche (Zeilen OHNE Muster)

grep -v "DEBUG" application.log

Anzahl der Treffer

grep -c "ERROR" logfile.txt

Kontext anzeigen

# 3 Zeilen vor und nach dem Treffer
grep -C 3 "Exception" error.log
 
# Nur 2 Zeilen danach
grep -A 2 "pattern" datei.txt
 
# Nur 2 Zeilen davor
grep -B 2 "pattern" datei.txt

Reguläre Ausdrücke

Erweiterte reguläre Ausdrücke (ERE)

# -E für erweiterte Regex
grep -E "error|warning|critical" system.log
 
# Zeilenanfang und -ende
grep "^Start" datei.txt      # Beginnt mit "Start"
grep "Ende$" datei.txt        # Endet mit "Ende"
 
# Beliebiges Zeichen
grep "f.o" datei.txt          # foo, fao, f1o, etc.
 
# Wiederholungen
grep -E "lo{2,4}" datei.txt   #loo, looo, loooo

Zeichenklassen

# Zahlen finden
grep "[0-9]" datei.txt
 
# Buchstaben finden
grep "[a-zA-Z]" datei.txt
 
# IP-Adressen finden
grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" network.log

Kombination mit Pipes

# Prozesse filtern
ps aux | grep apache
 
# Logdateien live überwachen
tail -f /var/log/syslog | grep "error"
 
# Mehrfaches Filtern
cat datei.txt | grep "wichtig" | grep -v "unwichtig"

Nützliche Optionen im Überblick

Option Bedeutung
-i Groß-/Kleinschreibung ignorieren (case insensitive)
-r, -R Rekursiv in Verzeichnissen suchen
-n Zeilennummern anzeigen
-v Invertierte Suche (Zeilen ohne Muster)
-l Nur Dateinamen mit Treffern ausgeben
-c Anzahl der Treffer zählen
-w Nur ganze Wörter suchen
-x Nur ganze Zeilen suchen
-A NUM NUM Zeilen nach Treffer anzeigen (After)
-B NUM NUM Zeilen vor Treffer anzeigen (Before)
-C NUM NUM Zeilen vor und nach Treffer (Context)
-E Erweiterte reguläre Ausdrücke verwenden
–color Treffer farbig hervorheben

Praktische Beispiele

Logs analysieren

# Alle ERROR-Meldungen der letzten Stunde
grep "ERROR" /var/log/syslog | tail -100
 
# Fehlgeschlagene SSH-Login-Versuche
grep "Failed password" /var/log/auth.log
 
# Alle einzigartigen IP-Adressen in Access-Log
grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" access.log | sort -u

Konfigurationsdateien durchsuchen

# Alle nicht-kommentierten Zeilen
grep -v "^#" /etc/ssh/sshd_config | grep -v "^$"
 
# Bestimmte Einstellung finden
grep -r "PermitRootLogin" /etc/ssh/

Code-Analyse

# Alle TODO-Kommentare finden
grep -rn "TODO" /pfad/zum/projekt/
 
# Funktionsdefinitionen finden
grep -E "^function |^def " *.py

Hinweise

  • grep gibt einen Exit-Code zurück: 0 = Treffer gefunden, 1 = keine Treffer, 2 = Fehler
  • Bei großen Dateien kann grep langsam sein; nutzen Sie awk oder sed für komplexere Verarbeitung
  • Farbige Ausgabe mit –color=auto erleichtert das Lesen
  • Alternative Tools: egrep (veraltet, nutze grep -E), fgrep (veraltet, nutze grep -F)
  • Für sehr große Datenmengen: ripgrep (rg) als moderne, schnellere Alternative

Fehlerbehebung

  • „Binary file matches“: Nutze -a um Binärdateien als Text zu behandeln oder -I um sie zu überspringen
  • Zu viele Treffer: Nutze -w für ganze Wörter oder präzisere Regex-Muster
  • Keine Treffer trotz vorhandenem Text: Prüfe Groß-/Kleinschreibung mit -i oder escape Sonderzeichen

Siehe auch

sammlung/grep.txt · Zuletzt geändert: von 127.0.0.1