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