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