Linux Administration

sed unter Linux verstehen und einsetzen – Der universelle Stream-Editor

Ob beim Anpassen von Konfigurationsdateien, beim Auswerten von Logdateien oder in Automatisierungsskripten – der Linux-Befehl sed gehört zu den mächtigsten Werkzeugen auf der Kommandozeile. Mit nur wenigen Befehlen lassen sich Texte suchen, ersetzen, löschen oder ergänzen, ohne Dateien manuell öffnen zu müssen. In diesem ausführlichen Leitfaden lernst du die wichtigsten Funktionen von sed kennen und erfährst anhand praxisnaher Beispiele, wie du wiederkehrende Aufgaben auf Linux-Servern effizient automatisierst.

4 min Lesezeit
Grafik: sed unter Linux: Der praktische Leitfaden

Wer regelmäßig mit Linux arbeitet, stößt früher oder später auf den Befehl sed. Während viele Administratoren zunächst zu einem Texteditor wie Nano oder Vim greifen, spielt sed seine Stärken besonders bei der automatisierten Verarbeitung von Dateien, Skripten und Logdateien aus.

Mit sed lassen sich Texte suchen, ersetzen, löschen, einfügen oder verändern – direkt auf der Kommandozeile und ohne die Datei manuell zu öffnen. Dadurch gehört sed zu den wichtigsten Werkzeugen für Administratoren, DevOps-Engineers und Entwickler.

In diesem Beitrag schauen wir uns den Linux-Befehl ausführlich an – von den Grundlagen bis hin zu praktischen Beispielen für den Alltag.


Was ist sed?

Der Name sed steht für:

Stream EDitor

Anders als klassische Texteditoren arbeitet sed zeilenweise auf einem Datenstrom (Stream).

Das bedeutet:

  • Dateien werden nicht interaktiv geöffnet
  • Zeilen werden nacheinander verarbeitet
  • Änderungen können direkt ausgegeben oder gespeichert werden
  • Ideal für Skripte und Automatisierungen

Typische Anwendungsfälle:

  • Konfigurationsdateien anpassen
  • Massenhafte Textersetzungen
  • Logdateien analysieren
  • Daten für andere Programme aufbereiten
  • Automatisierte Deployments

Grundlegende Syntax

Die allgemeine Syntax lautet:

sed [OPTIONEN] 'BEFEHL' DATEI

Beispiel:

sed 's/Hallo/Hi/' datei.txt

Ausgabe:

Hi Welt

Die Originaldatei bleibt dabei unverändert.


Die wichtigste Funktion: Suchen und Ersetzen

Die am häufigsten verwendete Funktion ist:

s/alt/neu/

Dabei bedeutet:

  • s = substitute (ersetzen)
  • alt = Suchbegriff
  • neu = Ersatztext

Beispiel:

Datei:

Linux ist toll.

Befehl:

sed 's/Linux/Debian/' datei.txt

Ergebnis:

Debian ist toll.

Alle Treffer einer Zeile ersetzen

Standardmäßig ersetzt sed nur den ersten Treffer pro Zeile.

Beispiel:

Linux Linux Linux
sed 's/Linux/Debian/' datei.txt

Ergebnis:

Debian Linux Linux

Mit dem Flag g (global):

sed 's/Linux/Debian/g' datei.txt

Ergebnis:

Debian Debian Debian

Groß- und Kleinschreibung ignorieren

Mit dem Flag I:

sed 's/linux/Debian/I' datei.txt

Treffer:

linux
Linux
LINUX
LiNuX

werden gleichermaßen ersetzt.


Änderungen direkt in der Datei speichern

Normalerweise schreibt sed nur auf die Standardausgabe.

Mit -i erfolgt die Änderung direkt in der Datei:

sed -i 's/Linux/Debian/g' datei.txt

Nun wird die Datei tatsächlich verändert.


Sicherheitskopie erstellen

Besonders sinnvoll:

sed -i.bak 's/Linux/Debian/g' datei.txt

Dadurch entstehen:

datei.txt
datei.txt.bak

Falls etwas schiefgeht, kann die Sicherung wiederhergestellt werden.


Zeilen löschen

Eine bestimmte Zeile löschen

sed '5d' datei.txt

Löscht Zeile 5.


Mehrere Zeilen löschen

sed '5,10d' datei.txt

Löscht Zeile 5 bis 10.


Leere Zeilen entfernen

sed '/^$/d' datei.txt

Sehr praktisch beim Bereinigen von Dateien.


Zeilen anzeigen

Nur eine bestimmte Zeile

sed -n '10p' datei.txt

Zeigt nur Zeile 10 an.


Zeilenbereich anzeigen

sed -n '10,20p' datei.txt

Zeigt Zeile 10 bis 20.


Zeilen einfügen

Vor einer Zeile:

sed '/BEGINN/i Neue Zeile' datei.txt

Nach einer Zeile:

sed '/BEGINN/a Neue Zeile' datei.txt

Ganze Zeilen ersetzen

Beispiel:

Datei:

ServerName localhost

Befehl:

sed 's/^ServerName.*/ServerName example.com/'

Ergebnis:

ServerName example.com

Ein häufiger Anwendungsfall bei Apache-Konfigurationen.


Kommentare entfernen

Viele Konfigurationsdateien enthalten Kommentare.

Beispiel:

sed '/^#/d' datei.conf

Entfernt alle Kommentarzeilen.


Leere und kommentierte Zeilen gleichzeitig entfernen

sed '/^#/d;/^$/d' datei.conf

Sehr hilfreich beim Analysieren von Konfigurationsdateien.


Reguläre Ausdrücke mit sed

sed unterstützt reguläre Ausdrücke.

Alle Zahlen ersetzen

sed 's/[0-9]/X/g'

Beispiel:

Server123

wird zu:

ServerXXX

Nur Buchstaben ersetzen

sed 's/[A-Za-z]/X/g'

IP-Adressen maskieren

sed 's/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/XXX.XXX.XXX.XXX/g'

Praktisch für Logdateien.


Apache-Konfiguration automatisch ändern

Vorher:

Listen 80

Ändern auf:

sed -i 's/^Listen 80/Listen 8080/' /etc/apache2/ports.conf

SSH-Port automatisch ändern

Vorher:

#Port 22

Befehl:

sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config

Danach:

sudo systemctl restart ssh

Mehrere Ersetzungen gleichzeitig

sed -e 's/Linux/Debian/g' \
    -e 's/Ubuntu/Debian/g' \
    datei.txt

sed in Pipes verwenden

Einer der größten Vorteile.

Speicherverbrauch anzeigen

free -h | sed -n '2p'

Prozesse filtern

ps aux | sed -n '1,10p'

Variablen in Shell-Skripten verwenden

HOSTNAME="server01"

sed "s/HOSTNAME/$HOSTNAME/g" template.conf

Template:

Server = HOSTNAME

Ergebnis:

Server = server01

Praktischer Einsatz im Serverbetrieb

Typische Aufgaben:

Apache-Konfiguration anpassen

sed -i 's/example.com/meinedomain.de/g' vhost.conf

SSL aktivieren

sed -i 's/SSL=0/SSL=1/' config.conf

Datenbankzugänge ändern

sed -i 's/dbuser=root/dbuser=admin/'

Reverse-Proxy konfigurieren

sed -i 's/PORT=80/PORT=8080/'

GNU sed vs. BSD sed

Linux-Systeme verwenden meist:

GNU sed

Auf macOS wird standardmäßig:

BSD sed

verwendet.

Daher funktionieren manche Optionen unterschiedlich.

Beispiel:

Linux:

sed -i 's/a/b/g' datei.txt

macOS:

sed -i '' 's/a/b/g' datei.txt

Häufige Fehler

Datei versehentlich überschrieben

Deshalb besser:

sed -i.bak

verwenden.


Reguläre Ausdrücke falsch escaped

Statt:

sed 's/./X/g'

muss häufig:

sed 's/\./X/g'

verwendet werden.


Falsche Anführungszeichen

Variablen:

sed "s/$ALT/$NEU/g"

Keine Variablen:

sed 's/alt/neu/g'


sed gehört zu den mächtigsten Standardwerkzeugen unter Linux. Obwohl die Syntax anfangs etwas gewöhnungsbedürftig wirkt, spart der Befehl im Alltag enorm viel Zeit. Besonders bei der automatisierten Bearbeitung von Konfigurationsdateien, Logdateien und Textdaten ist sed oft die schnellste und eleganteste Lösung.

Wer Linux-Server administriert, Shell-Skripte schreibt oder wiederkehrende Aufgaben automatisieren möchte, sollte die wichtigsten sed-Funktionen unbedingt beherrschen. Schon einfache Ersetzungen mit sed -i können viele manuelle Arbeitsschritte ersparen und machen Installations- sowie Wartungsskripte deutlich flexibler und professioneller.