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 '2c\Neue zweite Zeile' demo.txt
Zeilen anhand eines Musters ersetzen
sed '/Bob/c\Robert' demo.txt
Datei ändern (mit Backup)
sed -i.bak '/Bob/c\Robert' 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:]]*=/c\timeout = 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
