In diesem Kapitel wird grep produktiv.
Du lernst:
- Kontextanzeige (
-A,-B,-C) - nur Treffer ausgeben (
-o) - rekursive Suche (
-r,-R) - gezieltes Ein-/Ausschließen von Dateien
- typische Admin-Szenarien (Logs, Fehleranalyse)
🔹 Kompatibilität
Getestet mit GNU grep 3.x unter Ubuntu 22.04 und neuer.
🔹 Kontext anzeigen – Fehler verstehen
Erstelle eine Beispiel-Logdatei:
cat > app.log <<'EOF' [INFO] System gestartet [INFO] Benutzer angemeldet [ERROR] Datenbank nicht erreichbar Stacktrace Zeile 1 Stacktrace Zeile 2 [INFO] Wieder verbunden EOF
🔹 Nur Fehlermeldungen anzeigen
grep ERROR app.log
Ausgabe:
[ERROR] Datenbank nicht erreichbar
Das reicht oft nicht – du brauchst den Kontext.
🔹 Zeilen NACH dem Treffer anzeigen (-A)
grep -A 2 ERROR app.log
Ausgabe:
[ERROR] Datenbank nicht erreichbar Stacktrace Zeile 1 Stacktrace Zeile 2
🔹 Zeilen VOR dem Treffer anzeigen (-B)
grep -B 1 ERROR app.log
🔹 Zeilen VOR und NACH anzeigen (-C)
grep -C 2 ERROR app.log
👉 Sehr wichtig bei Log-Analyse.
🔹 Nur den Treffer ausgeben (-o)
Oft willst du nur das Muster – nicht die ganze Zeile.
Beispiel:
grep -o 'ERROR' app.log
Praktischer: IP-Adressen extrahieren
Erstelle Testdatei:
cat > access.log <<'EOF' 192.168.0.10 - - [20/Sep/2025] "GET /index.html" 10.0.0.5 - - [20/Sep/2025] "POST /login" EOF
IP-Adressen extrahieren:
grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' access.log
Ausgabe:
192.168.0.10 10.0.0.5
👉 -o + -E ist extrem mächtig.
🔹 Rekursive Suche (-r)
Admin-Standardfall:
Fehler in Konfigurationsverzeichnis suchen.
grep -r ERROR /etc
🔹 Mit Dateinamen anzeigen (-n)
grep -rn ERROR /etc
🔹 Bestimmte Dateien einbeziehen (–include)
grep -r --include="*.conf" ERROR /etc
🔹 Dateien ausschließen (–exclude)
grep -r --exclude="*.log" ERROR /var/log
🔹 Typische Admin-Szenarien
SSH Login-Fehler analysieren
grep "Failed password" /var/log/auth.log
Mit Kontext:
grep -C 2 "Failed password" /var/log/auth.log
HTTP 500 Fehler zählen
grep -c ' 500 ' access.log
Alle Warnungen und Fehler finden
grep -E 'ERROR|WARN' app.log
🔹 Performance-Tipp (Admin-Level)
Bei sehr großen Dateien:
LC_ALL=C grep ERROR big.log
Warum?
👉 Locale-Deaktivierung beschleunigt Pattern-Matching deutlich.
Das ist relevant bei Gigabyte-Logs.
⚠️ Typische Fehler
Fehler 1: Rekursive Suche ohne Rechte
grep -r ERROR /
Kann viele „Permission denied“-Meldungen erzeugen.
Besser:
sudo grep -r ERROR /
Oder gezielt Verzeichnisse durchsuchen.
Fehler 2: Zu breites Pattern
grep error app.log
Matcht auch „fatal error“, „minor error“, etc.
Wenn exakter gewünscht:
grep -w error app.log
✅ Übung
Aufgabe 1
Zeige alle Fehler inklusive zwei Zeilen Kontext aus app.log.
Aufgabe 2
Extrahiere alle IP-Adressen aus access.log.
Aufgabe 3
Suche rekursiv nach „Listen“ im Verzeichnis /etc, aber nur in .conf Dateien.
🧾 Zusammenfassung (Kapitel 3)
In diesem Kapitel hast du gelernt:
- Kontextanzeige mit
-A,-B,-C - nur Treffer ausgeben mit
-o - rekursive Suche mit
-r - gezielte Dateifilterung
- grep produktiv im Admin-Alltag einsetzen
👉 Jetzt wird grep ein echtes Analyse-Werkzeug.
👉 Im nächsten Kapitel
Im nächsten Kapitel gehen wir tiefer:
- grep bei großen Dateien
- Performance-Optimierung
- Binary-Dateien
- Unterschiede grep vs awk Performance
- interne Arbeitsweise von grep
Jetzt beginnt der echte Deep Dive.
