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.