Anwenden von AWK und SED
🧾 AWK & SED – Cheat Sheet (Spickzettel)
🔹 Allgemein
Element |
Bedeutung |
^ |
Anfang einer Zeile |
$ |
Ende einer Zeile |
. |
Beliebiges Zeichen |
* |
0 oder mehr Wiederholungen |
+ |
1 oder mehr Wiederholungen |
\s |
Leerzeichen |
\t |
Tabulator |
🛠️ SED – Häufige Befehle
Zweck |
Befehl |
Text ersetzen |
sed 's/alt/neu/g' |
Zeile löschen |
sed '/Muster/d' |
Zeile einfügen vorher |
sed '/Muster/i\Text' |
Zeile einfügen nachher |
sed '/Muster/a\Text' |
Nur passende Zeilen zeigen |
sed -n '/Muster/p' |
In-Place-Ersetzung |
sed -i 's/alt/neu/g' datei.txt |
🛠️ AWK – Häufige Befehle
Zweck |
Befehl |
Erstes Feld ausgeben |
awk '{print $1}' |
Feldtrenner setzen (z. B. CSV) |
awk -F, '{print $2}' |
Zeilen mit Bedingung |
awk '$3 > 100' |
Summen berechnen |
awk '{sum+=$2} END {print sum}' |
Zeilen zählen |
awk 'END {print NR}' |
Formatierte Ausgabe |
awk '{printf "Name: %s\n", $1}' |
💡 Praxisprojekt: Log-Analyse mit awk und sed
Angenommen, du hast folgende Datei: zugriff.log
swift
192.168.0.1 - - [16/Jul/2025:08:30] "GET /index.html" 200
192.168.0.2 - - [16/Jul/2025:08:31] "GET /admin" 403
192.168.0.1 - - [16/Jul/2025:08:32] "POST /login" 200
192.168.0.3 - - [16/Jul/2025:08:33] "GET /admin" 403
✅ Aufgabe: Finde alle IPs mit einem HTTP-Statuscode 403 und zähle, wie oft jede vorkommt.
Lösung:
bash
awk '$NF == 403 {print $1}' zugriff.log | sort | uniq -c
Erklärung:
$NF ist das letzte Feld (HTTP-Status)
$1 ist die IP-Adresse
sort | uniq -c zählt die Häufigkeit
Erweiterung – Füge Zeitstempel nur der 403-Zugriffe aus:
bash
awk '$NF == 403 {print $1, $4}' zugriff.log
🔄 Bonus – Kombiniere mit sed zur Bereinigung
Wenn in der Logdatei HTML-Escapes wie " vorkommen, kannst du sie mit sed bereinigen:
bash
sed 's/"/"/g' zugriff.log | awk '$NF == 403 {print $1}'