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.