Der Befehl sed (Stream Editor) in Linux ist ein leistungsfähiges Werkzeug für die Textverarbeitung und Dateiveränderung. Er ermöglicht das effiziente Suchen, Ersetzen, Einfügen und Löschen von Text in Dateien, was ihn zu einem wichtigen Befehl für die Automatisierung und Skripterstellung macht. In diesem Leitfaden wird anhand von praktischen Beispielen gezeigt, wie der sed-Befehl zum Aktualisieren von Dateien in Linux verwendet werden kann.


Warum den Befehl Sed verwenden?

Der sed-Befehl wird häufig verwendet für:

Textersetzung – Einfaches Ersetzen von Wörtern, Phrasen oder Mustern in Dateien.
✅ S tapelverarbeitung – Ändern Sie mehrere Dateien auf einmal mit Skripten.
Effizienz – Verarbeitet große Dateien schnell, ohne sie zu öffnen.
Inline-Bearbeitung – Ändern Sie Dateien direkt über die Befehlszeile.
Automatisierung – Wird in Skripten verwendet, um sich wiederholende Textänderungen durchzuführen.


Grundsyntax des Sed-Befehls

Die allgemeine Syntax des sed-Befehls lautet:

sed [OPTIONEN] 's/alter-text/neuer-text/g' Dateiname

Wobei:

  • s – Steht für die Ersetzung.
  • alter-text – Der zu ersetzende Text.
  • neuer-text – Der zu ersetzende Text.
  • g – (Global) Stellt sicher, dass alle Vorkommen in der Zeile ersetzt werden.
  • filename – Die zu ändernde Datei.

So verwenden Sie den Sed-Befehl zum Aktualisieren von Dateien

1. Ersetzen eines Wortes in einer Datei

Um ein bestimmtes Wort in einer Datei zu ersetzen, verwenden Sie:

sed 's/Linux/Ubuntu/g' file.txt

Damit wird in jeder Zeile von file.txt das erste Vorkommen von “Linux” durch “Ubuntu” ersetzt.

2. Ersetzen aller Vorkommen in einer Datei

So ersetzen Sie alle Vorkommen eines Wortes in einer Datei global:

sed 's/Linux/Ubuntu/g' file.txt

Das g-Flag sorgt dafür, dass jedes Vorkommen in einer Zeile ersetzt wird.

3. Eine Datei an Ort und Stelle bearbeiten (Datei direkt ändern)

So nehmen Sie Änderungen direkt in der Datei vor, ohne dass die Ausgabe angezeigt wird:

sed -i 's/Linux/Ubuntu/g' file.txt

Die Option -i ermöglicht die Bearbeitung an Ort und Stelle, d. h. die Originaldatei wird geändert, ohne dass eine separate Version gespeichert werden muss.

4. Ersetzen von Text nur in bestimmten Zeilen

Um nur bestimmte Zeilen in einer Datei zu ändern, geben Sie die Zeilennummer an:

sed '3s/Linux/Ubuntu/' file.txt

Dieser Befehl ersetzt nur in Zeile 3“Linux” durch “Ubuntu”.

5. Eine Zeile mit einem bestimmten Text löschen

Um alle Zeilen zu löschen, die ein bestimmtes Wort enthalten, verwenden Sie:

sed '/unwanted-text/d' file.txt

Damit werden alle Zeilen entfernt, die “unerwünschten Text” enthalten.

6. Löschen einer bestimmten Zeile nach Nummer

Um eine bestimmte Zeile zu entfernen, verwenden Sie:

sed '5d' file.txt

Dies löscht die Zeile 5 aus file.txt.

7. Text vor einer Zeile einfügen

So fügen Sie eine Zeile vor einer bestimmten Zeilennummer ein:

sed '3i\Dies ist eine neue Zeile' file.txt

Dies fügt “Dies ist eine neue Zeile” vor Zeile 3 ein.

8. Einfügen von Text nach einer Zeile

So fügen Sie eine Zeile nach einer bestimmten Zeilennummer ein:

sed '3a\Dies ist eine angehängte Zeile' file.txt

Damit wird “Dies ist eine angehängte Zeile” nach Zeile 3 eingefügt.

9. Ersetzen eines Wortes in mehreren Dateien

So ersetzen Sie Text in mehreren Dateien auf einmal:

sed -i 's/Linux/Ubuntu/g' *.txt

Dieser Befehl ändert alle .txt-Dateien im Verzeichnis und ersetzt “Linux” durch “Ubuntu”.


Erweiterte Sed-Befehle

1. Mehrere Sed-Befehle zusammen verwenden

Um mehrere Änderungen auf einmal durchzuführen:

sed -i -e 's/Linux/Ubuntu/g' -e 's/Server/Cloud/g' file.txt

Dies ersetzt “Linux” durch “Ubuntu” und “Server” durch “Cloud” in file.txt.

2. Sed mit regulären Ausdrücken verwenden

Um Zahlen in einer Datei zu ersetzen:

sed 's/[0-9]/#/g' datei.txt

Dadurch werden alle Ziffern durch # ersetzt.

3. Bestimmte Zeilen aus einer Datei extrahieren

So extrahieren Sie die Zeilen von 5 bis 10 und zeigen sie an:

sed -n '5,10p' file.txt

Die Option -n verhindert das Drucken der gesamten Datei und zeigt nur die Zeilen 5-10 an.


Best Practices für die Verwendung von Sed

🔹 S ichern Sie Dateien immer vor der Verwendung von -i – Verhindern Sie versehentlichen Datenverlust.
🔹 Verwenden Sie reguläre Ausdrücke – Leistungsstarker Mustervergleich für komplexe Änderungen.
🔹 Testen Sie Befehle vor dem Anwenden von Änderungen – Führen Sie sed ohne -i aus, um eine Vorschau der Ausgabe zu erhalten.
🔹 Verwenden Sie Skripte für die Automatisierung – Kombinieren Sie sed mit Shell-Skripten für die Stapelverarbeitung.


Schlussfolgerung

Der Befehl sed ist ein vielseitiges und effizientes Werkzeug zum Aktualisieren von Dateien unter Linux. Ob Sie nun Text ersetzen, Zeilen löschen oder Inhalte einfügen müssen, sed kann diese Aufgaben automatisieren und vereinfachen. Wenn Sie sed beherrschen, können Sie Ihre Arbeitsabläufe verbessern und die Produktivität bei der Linux-Administration und -Skripterstellung steigern.