🧾 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}'