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 = valuekey=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