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:
🔹 Das Sternchen * – Wiederholung
* bedeutet:
„0 oder mehr Wiederholungen des vorherigen Zeichens“
Beispiel:
grep 'erro*r' regex.txt
Passt auf:
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.