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-
grepnutzt Basic Regular Expressions (BRE) - Mit
-Eaktivierst 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) -
--includeund--exclude - praktische Admin-Szenarien
Jetzt wird grep wirklich produktiv.
