In diesem Kapitel setzen wir alles Gelernte in einem realistischen Szenario um.
Ziel:
Eine unsaubere Konfigurationsdatei soll automatisch:
- Kommentarzeilen entfernen
- Leerzeilen entfernen
- Schreibweise normalisieren (
key = value → key=value)
- bestimmte Werte setzen
- fehlende Schlüssel ergänzen
So etwas ist typischer Admin-Alltag.
🔹 Ausgangssituation
Beispieldatei
app.conf:
# Beispielkonfiguration
user = alice
timeout = 30
log_level = debug
# API Zugang fehlt
Problem:
- unnötige Leerzeilen
- uneinheitliche Formatierung
- falscher Log-Level
fehlender
api_key
🔹 Schritt 1: Bereinigung und Normalisierung
Wir erstellen ein sed-Skript.
Datei cleanup.sed
/^#/d
/^[[:space:]]*$/d
s/^[[:space:]]*//
s/[[:space:]]*=[[:space:]]*/=/
s/^log_level=.*/log_level=info/
s/^timeout=.*/timeout=60/
Was passiert hier?
- Kommentare löschen
- Leerzeilen löschen
- führende Leerzeichen entfernen
- Leerzeichen um
= entfernen
log_level auf info setzen
timeout auf 60 setzen
Vorschau (Datei bleibt unverändert)
sed -f cleanup.sed app.conf
Datei wirklich ändern (mit Backup)
sed -i.bak -f cleanup.sed app.conf
📁 Backup-Datei:
app.conf.bak
🔹 Schritt 2: Fehlenden Schlüssel ergänzen
Jetzt prüfen wir, ob
api_key existiert. Falls nicht, hängen wir ihn an.
grep -q '^api_key=' app.conf || echo 'api_key=CHANGE_ME' >> app.conf
🔹 6.4 Komplettlösung als Skript (empfohlen)
Wenn du das regelmäßig brauchst, ist ein kleines Bash-Skript ideal.
Datei
cleanup.sh
#!/bin/bash
set -euo pipefail
CONFIG="app.conf"
SED_SCRIPT="cleanup.sed"
# Backup der Originaldatei (zusätzlich zur sed .bak, je nach Wunsch)
cp -a "$CONFIG" "$CONFIG.pre-clean.bak"
# Bereinigen über temp-Datei (portabel und sicher)
sed -f "$SED_SCRIPT" "$CONFIG" > "$CONFIG.tmp"
mv "$CONFIG.tmp" "$CONFIG"
# api_key ergänzen, wenn er fehlt
grep -q '^api_key=' "$CONFIG" || echo 'api_key=CHANGE_ME' >> "$CONFIG"
echo "Bereinigung abgeschlossen: $CONFIG"
echo "Backup: $CONFIG.pre-clean.bak"
Ausführbar machen und starten:
chmod +x cleanup.sh
./cleanup.sh
🔹 Ergebnis
Vorher (Beispiel):
user = alice
timeout = 30
log_level = debug
Nachher:
user=alice
timeout=60
log_level=info
api_key=CHANGE_ME
⚠️ Warum kein „komplexer sed-Magietrick“?
Man könnte vieles auch mit Hold-Space, Labels und Sprüngen lösen.
Aber:
- schwer lesbar
- schwer wartbar
- fehleranfällig
👉 Gute Praxis ist:
verständlich + robust.
✅ Übung: Eigenes Mini-Praxisprojekt
Erstelle eine Datei
server.conf:
cat > server.conf <<'EOF'
# Server
host = localhost
port = 8080
mode = dev
EOF
Aufgabe 1
- Kommentare entfernen
- Leerzeilen entfernen
- Formatierung normalisieren (
key=value)
Tipp (Vorschau):
sed '/^#/d; /^[[:space:]]*$/d; s/^[[:space:]]*//; s/[[:space:]]*=[[:space:]]*/=/' server.conf
Aufgabe 2
- mode=production setzen
- falls
log_level fehlt → log_level=info anhängen
Tipp:
sed -i.bak 's/^mode=.*/mode=production/' server.conf
grep -q '^log_level=' server.conf || echo 'log_level=info' >> server.conf
Aufgabe 3
Baue daraus ein Bash-Skript wie oben (
cleanup.sh), das
server.conf automatisch bereinigt.
🔹 Zusammenfassung (Kapitel 6)
- In diesem Kapitel hast du gelernt:
- wie man
sed realistisch in einem Projekt einsetzt
- wie man Konfigurationsdateien bereinigt und normalisiert
- wann man
sed sinnvoll mit anderen Tools kombiniert (grep)
- warum einfache Lösungen oft die besten sind
👉
sed ist ein starker Filter – in echten Projekten kombiniert man ihn mit Shell-Logik.
👉
Im nächsten Kapitel schauen wir uns fortgeschrittene Konzepte von
sed an:
📚 Inhaltsverzeichnis
👉
sed Kapitel 1: Grundlagen von sed – erste Ersetzungen & Konzepte
👉
sed Kapitel 2: Suchen & Ersetzen mit sed – Grundlagen & Regex
👉
sed Kapitel 3: Zeilen bearbeiten mit sed
👉
sed Kapitel 4: sed-Skripte schreiben & kombinieren
👉
sed Kapitel 5: sed in Kombination mit anderen Tools
👉
sed Kapitel 6: Praxisprojekt – Konfigurationsdateien automatisch bereinigen & anpassen
⭐ Bonus-Kapitel
👉
sed Kapitel 7: Bonus – Profi-Tipps & Best Practices für sed im Alltag