Im ersten Kapitel hast du einfache Textsuche kennengelernt. Jetzt beginnt der eigentliche Deep Dive: 👉 Reguläre Ausdrücke (Regex) Mit Regex kannst du:
  • Zeilenanfang und -ende prüfen
  • Zahlen oder Buchstaben filtern
  • komplexe Muster definieren
  • präzise Log-Analysen durchführen

🔹 Kompatibilität

Getestet mit GNU grep 3.x unter Ubuntu 22.04 und neuer. Hinweis:
  • Standard-grep nutzt Basic Regular Expressions (BRE)
  • Mit -E aktivierst du Extended Regular Expressions (ERE)

🔹 Zeilenanfang und Zeilenende

Erstelle eine Testdatei:
cat > regex.txt <<'EOF'
error: Datei fehlt
warning: Speicher niedrig
info: gestartet
fatal error
EOF
Zeilen, die mit „error“ beginnen
grep '^error' regex.txt
Ausgabe:
error: Datei fehlt
👉 ^ steht für Zeilenanfang Zeilen, die mit „error“ enden
grep 'error$' regex.txt
Ausgabe:
fatal error
👉 $ steht für Zeilenende

🔹 Der Punkt . – ein beliebiges Zeichen

grep 'w.rn' regex.txt
Der Punkt steht für genau ein beliebiges Zeichen. Beispiele, die passen würden:
  • eXor
  • e1or
  • e-or

🔹 Das Sternchen * – Wiederholung

* bedeutet: „0 oder mehr Wiederholungen des vorherigen Zeichens“ Beispiel:
grep 'erro*r' regex.txt
Passt auf:
  • errr
  • error
  • eror
Hinweis: erro*r findet den Treffer überall in der Zeile. Deshalb passt auch „fatal error“. Wenn du nur Zeilen willst, die mit error beginnen, nutze ^erro*r. Optional als Zusatzbefehl:
grep '^erro*r' regex.txt

🔹 Erweiterte Regex mit -E

In Basic-Regex (Standard) gelten + und ? nicht direkt. Mit -E aktivierst du Extended Regex. Beispiel:
grep -E 'error|warning' regex.txt
Ausgabe:
error: Datei fehlt
warning: Speicher niedrig
fatal error
👉 | bedeutet ODER (nur mit -E sauber nutzbar)

🔹 Zeichenklassen

Alle Zeilen mit Zahlen Erstelle eine neue Datei:
cat > zahlen.txt <<'EOF'
user1
admin
test42
guest
EOF
Suche nach Zeilen mit mindestens einer Zahl:
grep '[0-9]' zahlen.txt
Ausgabe:
user1
test42
POSIX-Zeichenklassen Beispiel: Nur Buchstaben
grep '^[[:alpha:]]+$' zahlen.txt
Hinweis: + ist BRE-Syntax (GNU-kompatibel). Alternative mit -E (sauberer):
grep -E '^[[:alpha:]]+$' zahlen.txt

🔹 Exakte Wortmuster mit -w

grep -w error regex.txt
Unterschied zu:
grep error regex.txt
-w verhindert Teilwort-Treffer.

⚠️ Typische Fehler

Lege eine neue Datei an:
cat > files.txt <<'EOF'
error.log
access.log
notes.txt
backup.tar.gz
EOF
Fehler 1: + ohne -E
grep 'a+' datei.txt
Das funktioniert nicht wie erwartet. Korrekt:
grep -E 'a+' zahlen.txt
Fehler 2: Punkt nicht maskiert nicht maskiert:
grep '.log' files.txt
maskiert:
grep '.log' files.txt
Der Punkt bedeutet „beliebiges Zeichen“.

✅ Übung

Aufgabe 1 Gib nur Zeilen aus regex.txt aus, die mit „warning“ beginnen. Aufgabe 2 Finde alle Zeilen in zahlen.txt, die nur aus Buchstaben bestehen. Aufgabe 3 Suche alle Zeilen, die entweder „error“ oder „info“ enthalten (mit -E).

🧾 Zusammenfassung (Kapitel 2)

  • In diesem Kapitel hast du gelernt:
  • ^ und $
  • . als Platzhalter
  • * für Wiederholungen
  • | mit -E
  • Zeichenklassen [0-9]
  • POSIX-Klassen [[:alpha:]]
  • typische Regex-Fehler
👉 Reguläre Ausdrücke machen grep extrem präzise.

👉 Im nächsten Kapitel

Im nächsten Kapitel schauen wir uns erweiterte Optionen an:
  • Kontextanzeige (-A, -B, -C)
  • nur Treffer ausgeben (-o)
  • rekursive Suche (-r, -R)
  • --include und --exclude
  • praktische Admin-Szenarien
Jetzt wird grep wirklich produktiv.