Sowohl sed als auch awk können Reguläre Ausdrücke (Regex) nutzen.
Das macht sie extrem flexibel, wenn es darum geht, komplexe Muster in Texten zu finden oder zu bearbeiten.
In diesem Bonus-Artikel lernst du, wie du Regex in sed & awk einsetzt – und wie beide Tools dabei perfekt zusammenarbeiten.
🔹 Grundlagen: Reguläre Ausdrücke
Ein paar wichtige Zeichen:
.
→ beliebiges Zeichen^
→ Anfang einer Zeile$
→ Ende einer Zeile[abc]
→ eins von a, b oder c[0-9]
→ Ziffern 0–9*
→ beliebig oft+
→ mindestens einmal\?
→ optional
👉 Sowohl sed als auch awk unterstützen POSIX-Regex (standardisierte Variante).
🔹 Regex in sed
Beispiel: Alle Zeilen löschen, die mit einer Zahl beginnen:
sed '/^[0-9]/d' datei.txt
Beispiel: E-Mail-Adressen extrahieren:
sed -n 's/.*\([a-zA-Z0-9._%+-]\+@[a-zA-Z0-9.-]\+\.[a-zA-Z]\{2,4\}\).*/\1/p' text.txt
👉 sed ist besonders stark beim Ersetzen & Extrahieren mit Regex.
🔹 Regex in awk
Beispiel: Alle Zeilen, in denen die zweite Spalte eine Zahl größer als 100 ist UND mit „A“ beginnt:
awk '$1 ~ /^A/ && $2 > 100 {print $1, $2}' datei.txt
Beispiel: Alle Einträge, die eine E-Mail enthalten:
awk '/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/ {print $0}' text.txt
👉 awk eignet sich ideal für Regex auf Spalten.
🔹 Kombination: sed + awk mit Regex
Beispiel 1: Telefonnummern formatieren
Datei contacts.txt
:
Alice 0176123456 Bob 030987654 Charlie 004912345678
Pipeline:
sed 's/^0049/0/' contacts.txt | awk '{print $1, $2}'
👉 sed wandelt internationale Vorwahlen um, awk gibt Name + Nummer aus.
Beispiel 2: Logeinträge filtern & auswerten
Datei server.log
:
[2025-09-20 12:01] INFO User=Alice Action=Login [2025-09-20 12:02] ERROR User=Bob Action=Timeout [2025-09-20 12:03] WARN User=Alice Action=Retry
Pipeline:
sed -n '/ERROR/p' server.log | awk '{print $3, $4}'
Ausgabe:
User=Bob Action=Timeout
👉 sed filtert nur ERROR-Zeilen, awk analysiert die Spalten.
Beispiel 3: Daten aus CSV bereinigen & auswerten
Datei sales.csv
:
# Product;Price;Quantity Laptop;800;2 Phone;500;5 Tablet;300;3
Pipeline:
sed '/^#/d' sales.csv | awk -F';' '$2 ~ /^[0-9]+$/ {sum += $2 * $3} END {print "Umsatz:", sum}'
Ausgabe:
Umsatz: 4900
👉 sed entfernt Kommentare, awk nutzt Regex, um nur gültige Zahlen auszuwerten.
🔹 Übungen
1. Erstelle eine Datei users.txt
mit Namen + E-Mails.
- Extrahiere nur die E-Mails mit sed.
- Filtere mit awk nur Zeilen mit
.de
-Domains.
2. Erstelle eine Datei log.txt
mit INFO/ERROR-Einträgen.
- Filtere mit sed nur ERRORs.
- Zähle mit awk die Anzahl der ERRORs pro User.
3. Bonus: Kombiniere Regex in sed & awk, um Telefonnummern in ein einheitliches Format zu bringen (z. B. +49…
).
✅ Zusammenfassung
- sed & awk unterstützen Reguläre Ausdrücke, um komplexe Muster zu erkennen.
- sed → stark bei Suchen & Ersetzen im Text.
- awk → stark bei Regex in Spalten & Bedingungsprüfungen.
- Zusammen kannst du Daten bereinigen, transformieren und analysieren – alles direkt im Terminal.
👉 Damit ist die Bonus-Reihe „sed & awk“ komplett.
📚 Inhaltsverzeichnis
👉 awk Kapitel 1: Felder & Zeilen verstehen
👉 awk Kapitel 2: Muster & Bedingungen in awk
👉 awk Kapitel 3: Textbearbeitung & Formatierung mit awk
👉 awk Kapitel 4: Berechnungen & Statistiken mit awk
👉 awk Kapitel 5: Eigene awk-Skripte schreiben
👉 awk Kapitel 6: Praxisprojekt – Webserver-Logs analysieren mit awk
⭐ Bonus-Kapitel
👉 awk Bonus 1: Unterschiede & Gemeinsamkeiten von sed und awk
👉 awk Bonus 2: Textbereinigung mit sed, Datenanalyse mit awk
👉 awk Bonus 3: Kombinieren in einer Pipeline – sed & awk zusammen einsetzen
👉 awk Bonus 4: Praxisprojekt – Logdateien filtern, bereinigen und auswerten
👉 awk Bonus 5: Profi-Tricks – Reguläre Ausdrücke für sed & awk im Zusammenspiel