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