Kapitel 4: Mehrere sed-Befehle kombinieren und sed-Skripte verwenden

In den vorherigen Kapiteln hast du einzelne sed-Befehle kennengelernt.
In der Praxis reicht das oft nicht aus – mehrere Anpassungen sollen in einem Durchlauf erfolgen.

  • In diesem Kapitel lernst du:
  • mehrere sed-Befehle zu kombinieren
  • warum sed-Skripte meist besser sind als lange Einzeiler
  • wie du Änderungen übersichtlich und wartbar umsetzt

🔹 Mehrere sed-Befehle in einem Einzeiler

Mehrere Befehle können mit einem Semikolon (;) kombiniert werden.

Beispiel: Kommentare und Leerzeilen entfernen, Text ersetzen (Vorschau)

sed '/^#/d; /^[[:space:]]*$/d; s/foo/bar/g' datei.txt

Was passiert hier?

  • /^#/d → löscht Kommentarzeilen
  • /^[[:space:]]*$/d → löscht Leerzeilen
  • s/foo/bar/g → ersetzt alle Vorkommen von foo durch bar

👉 Die Reihenfolge ist wichtig:
Befehle werden von links nach rechts abgearbeitet.

🔴 Hinweis:
Solche Einzeiler sind praktisch, werden aber schnell unübersichtlich.

🔹 Warum sed-Skripte besser sind

Sobald mehr als zwei Befehle nötig sind, solltest du ein sed-Skript verwenden.

Vorteile:

  • besser lesbar
  • leichter wartbar
  • ideal für wiederholbare Aufgaben und Skripte

🔹 Ein einfaches sed-Skript erstellen

Datei cleanup.sed

/^#/d
/^[[:space:]]*$/d
s/foo/bar/g

👉 Jeder Befehl steht in einer eigenen Zeile.
👉 Die Syntax ist identisch zu Einzeilern – nur übersichtlicher.

sed-Skript ausführen (Vorschau)

sed -f cleanup.sed datei.txt

Datei wirklich ändern (mit Backup – empfohlen)

sed -i.bak -f cleanup.sed datei.txt

📁 Backup:

datei.txt.bak

🔹 Praxisbeispiel: Konfigurationsdatei bereinigen

Ziel:

  • Kommentarzeilen entfernen
  • Leerzeilen entfernen
  • Leerzeichen um = normalisieren

cleanup.sed

/^#/d
/^[[:space:]]*$/d
s/[[:space:]]*=[[:space:]]*/=/

Anwenden:

sed -i.bak -f cleanup.sed app.conf

Ergebnis:

user=alice
timeout=30
log_level=info

👉 Dieses Vorgehen ist realistisch, robust und gut für Automatisierung geeignet.

⚠️ Hinweis: POSIX vs. GNU sed

Einige Funktionen von sed sind GNU-Erweiterungen, z. B.:

  • -i (in-place editing)
  • erweiterte Regex-Flags wie I

Die Beispiele in diesem Kurs funktionieren zuverlässig unter Linux (GNU sed).

Übung: Mehrere sed-Befehle kombinieren

Aufgabe 1: Vorschau mit Einzeiler

  • Kommentare entfernen
  • Leerzeilen entfernen
sed '/^#/d; /^[[:space:]]*$/d' uebung4.txt

Aufgabe 2: sed-Skript erstellen

  • Erstelle ein sed-Skript, das:
  • Kommentare löscht
  • Leerzeilen entfernt
  • Leerzeichen um = entfernt

Aufgabe 3: Datei ändern (mit Backup)

Wende dein sed-Skript so an, dass die Datei direkt geändert wird, aber mit Backup.

✅ Zusammenfassung

  • In diesem Kapitel hast du gelernt:
  • mehrere sed-Befehle mit ; zu kombinieren
  • warum lange Einzeiler schnell unübersichtlich werden
  • wie man sed-Skripte erstellt und ausführt
  • wie man Konfigurationsdateien sauber und reproduzierbar bearbeitet

👉 Faustregel:
Einzeiler für schnelle Tests – sed-Skripte für alles, was bleiben soll.

👉 Im nächsten Kapitel lernst du, wie sed mit anderen Linux-Werkzeugen kombiniert wird – zum Beispiel mit grep, awk oder Pipes – um leistungsfähige Textverarbeitungsketten für den Alltag zu bauen.

 

📚 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