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.
Der sed-Befehl wird häufig verwendet für:
Ersetzen von Text – Einfaches Ersetzen von Wörtern, Phrasen oder Mustern in Dateien.
Stapelverarbeitung – Ändern Sie mehrere Dateien auf einmal mit Skripten.
Effizienz – Verarbeitet große Dateien schnell, ohne sie zu öffnen.
Inline-Bearbeitung – Ändern Sie Dateien direkt in der Befehlszeile.
Automatisierung – Wird in Skripten verwendet, um sich wiederholende Textänderungen durchzuführen.
Die allgemeine Syntax des sed-Befehls lautet:
sed [OPTIONS] 's/old-text/new-text/g' filename
Wobei:
Um ein bestimmtes Wort in einer Datei zu ersetzen, verwenden Sie:
sed 's/Linux/Ubuntu/g' file.txt
Dies ersetzt das erste Vorkommen von “Linux” durch “Ubuntu” in jeder Zeile von file.txt.
Um alle Vorkommen eines Wortes in einer Datei global zu ersetzen:
sed 's/Linux/Ubuntu/g' file.txt
Das g-Flag sorgt dafür, dass jedes Vorkommen in einer Zeile ersetzt wird.
Um Änderungen direkt in der Datei vorzunehmen, 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.
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”.
Um alle Zeilen zu löschen, die ein bestimmtes Wort enthalten, verwenden Sie:
sed '/unwanted-text/d' file.txt
Dies löscht alle Zeilen, die “unerwünschten Text” enthalten.
Um eine bestimmte Zeile zu löschen, verwenden Sie:
sed '5d' file.txt
Dies löscht die Zeile 5 aus file.txt.
Um eine Zeile vor einer bestimmten Zeilennummer einzufügen:
sed '3i\This is a new line' file.txt
Dies fügt “Dies ist eine neue Zeile” vor Zeile 3 ein.
Um eine Zeile nach einer bestimmten Zeilennummer einzufügen:
sed '3a\This is an appended line' file.txt
Dies fügt “Dies ist eine angehängte Zeile” nach der Zeile 3 ein.
Um Text in mehreren Dateien auf einmal zu ersetzen:
sed -i 's/Linux/Ubuntu/g' *.txt
Dieser Befehl ändert alle .txt-Dateien im Verzeichnis und ersetzt “Linux” durch “Ubuntu”.
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.
Zum Ersetzen von Zahlen in einer Datei:
sed 's/[0-9]/#/g' file.txt
Damit werden alle Ziffern durch # ersetzt.
Um die Zeilen von 5 bis 10 zu extrahieren und anzuzeigen:
sed -n '5,10p' file.txt
Die Option -n verhindert das Drucken der gesamten Datei und zeigt nur die Zeilen 5-10 an.
Der Befehl sed ist ein vielseitiges und effizientes Werkzeug zur Aktualisierung von Dateien unter Linux. Egal, ob Sie 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.