⚡ Lehrpfad 2: Scripting & Text-Mining

Bash 07: Text-Mining mit grep, sed, awk & jq

Durchleuchte Gigabytes an Logdaten mit grep & awk, manipuliere Konfigurationen mit sed und parse REST-APIs mit jq.

🔍 1. Die klassischen Unix-Textwerkzeuge

Große Logfiles und Systemberichte verarbeitest du direkt im Datenstrom ohne GUI:

# 🎯 1. grep: Suchen mit Regex & Invertieren:
grep -E -i "(error|fatal)" /var/log/syslog | grep -v "test"

# 🎯 2. sed: Suchen & Ersetzen im Stream:
sed -E 's/password="[^"]+"/password="***"/g' app.env

# 🎯 3. awk: Spaltenbasierte Analyse & Berechnung:
cat nginx.log | awk '{ sum += $NF; count++ } END { print "Avg Bytes:", sum/count }'

📦 2. JSON-Mining im Terminal mit jq

REST-APIs, Docker und Kubernetes kommunizieren über JSON. jq ist der Standard-Prozessor auf der Linux-Kommandozeile:

# 🎯 1. Array filtern mit select & Rohausgabe (-r):
curl -s https://api.example.com/users | jq -r '.[] | select(.role == "admin") | .email'

# 🎯 2. JSON in kommagetrennte Werte (CSV) umwandeln:
cat pods.json | jq -r '.items[] | "\(.metadata.name),\(.status.phase)"'
⛏️ Didaktische Analogie: Das Bergwerk der Datenanalyse

grep: Dein Metalldetektor – er schlägt an, wenn eine Zeile das gesuchte Goldstück (Pattern) enthält.

sed: Dein Meißel – er schleift und poliert Zeichenketten in Form.

awk: Deine Buchhalter-Waage – wiegt Spalten ab und berechnet Summen und Schnitte.

jq: Der Röntgen-Präzisionslaser, der blitzschnell durch verschachtelte JSON-Kristallstrukturen schneidet!

📑 3. Cheat-Sheet: Textwerkzeuge

Tool Beispiel Einsatzzweck
grep -E -i grep -E -i '(err|crit)' log Case-insensitiver Extended-Regex-Filter
sed -E 's/a/b/g' sed -E 's/http:/https:/g' Stream-Editor zum Ersetzen und Transformieren
awk '{ sum += $NF }' awk '{ print $1 }' file Spaltenextraktion, Filter und Aggregation
jq -r '.[] | select(...)' jq -r '.[] | .hostname' JSON-Parsing, Filterung & CSV-Export

🎯 Aufgaben & Checkliste in aufgabe.sh

💡 DevOps Pro-Tipp: jq Raw Output (-r)

Verwende beim Extrahieren von Strings für Umgebungsvariablen oder Shell-Skripte immer das Flag -r (raw output), damit jq keine störenden Anführungszeichen um den Text ausgibt!

💻 In Web-IDE öffnen → ← Zurück zu Bash 06 Weiter zu Bash 08 →