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.

 

📚 Inhaltsverzeichnis

👉 grep Kapitel 1: Einführung in grep – Suchen verstehen
👉 grep Kapitel 2: Reguläre Ausdrücke mit grep – Muster richtig einsetzen
👉 grep Kapitel 3: Erweiterte Optionen & Praxis – grep im Admin-Alltag
👉 grep Kapitel 4: Performance & große Dateien – grep im Deep Dive
👉 grep Kapitel 5: grep im Security- und Log-Analyse-Einsatz

⭐ Bonus-Kapitel

👉 Kapitel 6 (Bonus): PCRE, Lookarounds & Deep Dive mit grep