Systeme erzeugen oft große Logdateien - zum Beispiel Webserver, Datenbanken oder Anwendungen.
Diese Logs enthalten viele Informationen, aber auch viel "
Rauschen", das die Auswertung erschwert.In diesem Praxisprojekt kombinieren wir
sed & awk, um eine Logdatei Schritt für Schritt zu bereinigen und zu analysieren.
🔹 Ausgangsdatei: Beispiel-Log
# Application Log
2025-09-20 10:15:33 [INFO] User=Alice Action=Login
2025-09-20 10:16:01 [ERROR] User=Bob Action=DownloadFailed
2025-09-20 10:16:45 [INFO] User=Charlie Action=Upload
2025-09-20 10:17:22 [ERROR] User=Alice Action=Timeout
# End of file
Probleme:
- Kommentare mit
# sollen ignoriert werden.
- Zeilen enthalten unnötige Infos wie Zeitstempel.
- Wir wollen nur User, Aktion und Status (INFO/ERROR) auswerten.
🔹 Schritt 1: Kommentare entfernen (sed)
sed '/^#/d' app.log
Ausgabe:
2025-09-20 10:15:33 [INFO] User=Alice Action=Login
2025-09-20 10:16:01 [ERROR] User=Bob Action=DownloadFailed
2025-09-20 10:16:45 [INFO] User=Charlie Action=Upload
2025-09-20 10:17:22 [ERROR] User=Alice Action=Timeout
👉 Jetzt sind nur die relevanten Einträge übrig.
🔹 Schritt 2: Zeitstempel entfernen (sed)
Wir wollen die Daten auf
Status, User, Action reduzieren:
sed '/^#/d; s/^[0-9-]* [0-9:]* //' app.log
Ausgabe:
[INFO] User=Alice Action=Login
[ERROR] User=Bob Action=DownloadFailed
[INFO] User=Charlie Action=Upload
[ERROR] User=Alice Action=Timeout
🔹 Schritt 3: Daten analysieren (awk)
Anzahl der Fehler zählensed '/^#/d; s/^[0-9-]* [0-9:]* //' app.log | awk '$1=="[ERROR]" {count++} END {print "Fehler:", count}'Ausgabe:
Fehler: 2
Welche User hatten Fehler?sed '/^#/d; s/^[0-9-]* [0-9:]* //' app.log | awk '$1=="[ERROR]" {print $2}'Ausgabe:
User=Bob
User=Alice
🔹 Schritt 4: Aktionen pro User zählen
sed '/^#/d; s/^[0-9-]* [0-9:]* //' app.log | awk -F' ' '{actions[$2]++} END {for (u in actions) print u, actions[u]}'Ausgabe:
User=Alice 2
User=Charlie 1
User=Bob 1
👉 awk baut hier ein Array
actions[] auf und zählt die Aktionen pro Nutzer.
🔹 Bonus: Nur Aktionen extrahieren
sed '/^#/d; s/^[0-9-]* [0-9:]* //' app.log | awk '{print $3}'Ausgabe:
Action=Login
Action=DownloadFailed
Action=Upload
Action=Timeout
👉 Damit bekommst du eine Liste aller Aktionen.
🔹 Übung
- Erstelle eine eigene Logdatei
events.log mit gemischten Einträgen (INFO/ERROR, verschiedene User).
- Entferne Kommentare und Zeitstempel mit sed.
- Zähle mit awk die Anzahl aller ERRORs.
- Erstelle mit awk eine Statistik, wie viele Aktionen pro User vorkommen.
- Bonus: Gib nur die fehlerhaften Aktionen (ERRORs) pro User aus.
✅ Zusammenfassung
- Mit sed kannst du Logs schnell bereinigen (Kommentare, Zeitstempel, unnötige Teile entfernen).
- Mit awk kannst du die bereinigten Daten analysieren (zählen, filtern, Statistiken).
- Gemeinsam sind sed & awk ideal für Logdateianalyse und Monitoring.
- Dieses Praxisprojekt zeigt, wie nah die Kombination an echten Admin-Aufgaben ist.
👉
Im letzten Bonus-Artikel (Bonus 5) schauen wir uns Profi-Tricks mit regulären
Ausdrücken an, die sed & awk gemeinsam zu noch mächtigeren Tools machen.
📚 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