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_levelaufinfosetzen -
timeoutauf60setzen
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_levelfehlt →log_level=infoanhä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
sedrealistisch in einem Projekt einsetzt - wie man Konfigurationsdateien bereinigt und normalisiert
- wann man
sedsinnvoll 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
