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.