In diesem Kapitel lernst du, wie du mit sed ganze Zeilen gezielt bearbeitest: löschen (d), vor oder nach einer Zeile einfügen (i, a) und komplette Zeilen ersetzen (c). 🔴 Wichtig vorab: sed ändert standardmäßig keine Dateien, sondern gibt das Ergebnis nur auf der Konsole (STDOUT) aus. 👉 Möchtest du die Datei wirklich ändern, brauchst du -i (in-place editing).
🔹Zeilen löschen (d)
Erste Zeile löschen (Vorschau)
sed '1d' text.txt
Zeile 2 bis 4 löschen
sed '2,4d' text.txt
💡 Hinweis: Ohne -i bleibt die Datei unverändert. Datei wirklich ändern (mit Backup – empfohlen)
sed -i.bak '2,4d' text.txt
🔹Zeilen vor oder nach einer Zeile einfügen (i / a)
Beispiel-Datei demo.txt
Alice Bob Charlie
🔸 Zeile vor „Bob“ einfügen (Vorschau)
sed '/Bob/i--- Vor Bob ---' demo.txt
Ausgabe:
Alice --- Vor Bob --- Bob Charlie
➡️ Die Datei wird hier NICHT geändert. 🔸 Zeile nach „Bob“ einfügen (Vorschau)
sed '/Bob/a--- Nach Bob ---' demo.txt
✅ Datei wirklich ändern (mit Backup)
sed -i.bak '/Bob/i--- Vor Bob ---' demo.txt sed -i.bak '/Bob/a--- Nach Bob ---' demo.txt
Ergebnis in demo.txt:
Alice --- Vor Bob --- Bob --- Nach Bob --- Charlie
📁 Backup-Datei:
demo.txt.bak
🔸 Alternative ohne <>-i (portabel & sicher)
sed '/Bob/i--- Vor Bob ---' demo.txt > demo.txt.new && mv demo.txt.new demo.txt
👉 Diese Methode funktioniert überall (auch auf macOS) und ist besonders sicher bei Skripten. 🔹 Ganze Zeilen ersetzen (c) Zeile 2 komplett ersetzen (Vorschau)
sed '2cNeue zweite Zeile' demo.txt
Zeilen anhand eines Musters ersetzen
sed '/Bob/cRobert' demo.txt
Datei ändern (mit Backup)
sed -i.bak '/Bob/cRobert' demo.txt
🔹 Mehrere Zeilenbefehle kombinieren
sed ' /^#/d /Bob/i--- Vor Bob --- s/Alice/Alicia/ ' demo.txt
🔹 Merksätze für die Praxis
👉 Ohne -i → nur Vorschau 👉 Mit -i.bak → Datei ändern + Backup 👉 i, a, c arbeiten immer mit ganzen Zeilen 👉 Erst testen, dann schreiben!
🔹 Übung
Lege dir eine Testdatei an:
cat > uebung.txt <<'EOF' # Konfiguration user = Alice status = active user = Bob timeout = 30 EOF
Aufgabe 1: Kommentare und Leerzeilen entfernen (Vorschau)
- Entferne alle Zeilen, die mit
#beginnen - Entferne zusätzlich alle leeren Zeilen
Tipp (Lösungsidee):
sed '/^#/d; /^[[:space:]]*$/d' uebung.txt
Aufgabe 2: Vor „user = Bob“ eine Trennzeile einfügen (Vorschau) Füge vor der Zeile mit user = Bob diese Zeile ein: --- Benutzerwechsel --- Tipp (Lösungidee):
sed '/^#/d; /^[[:space:]]*$/d' uebung.txt
Aufgabe 3: timeout-Zeile komplett ersetzen (Vorschau) Ersetze die komplette Zeile timeout = 30 durch: timeout = 60 Tipp (Lösungidee):
sed '/^timeout[[:space:]]*=/ctimeout = 60' uebung.txt
Aufgabe 4: Datei wirklich ändern (mit Backup) Wende eine deiner Lösungen so an, dass die Datei direkt geändert wird – aber mit Backup. Beispiel:
sed -i.bak '/^#/d; /^[[:space:]]*$/d' uebung.txt
Prüfe danach:
cat uebung.txt cat uebung.txt.bak
✅ Zusammenfassung
In diesem Kapitel hast du gelernt, wie du mit sed ganze Zeilen bearbeitest: d löscht Zeilen (z. B. 1d, 2,4d, /^#/d) i fügt eine Zeile vor einem Treffer ein a fügt eine Zeile nach einem Treffer ein c ersetzt eine komplette Zeile 👉 Wichtigster Merksatz: Ohne -i ist sed nur eine Vorschau (Ausgabe auf STDOUT). Mit -i.bak änderst du die Datei direkt und hast automatisch ein Backup.
📚 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

