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