open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Tipps

Der Linux-Befehl `sed` – Textbearbeitung wie ein Profi auf der Kommandozeile

Autor
Der Linux-Befehl `sed` – Textbearbeitung wie ein Profi auf der Kommandozeile

In der Linux-Welt gehört sed zu den mächtigsten und gleichzeitig meistunterschätzten Tools. Der Name steht für „stream editor“, also ein Editor, der Textströme verarbeitet.

Mit sed kannst du Textdateien automatisch durchsuchen, ersetzen, löschen oder verändern – ohne sie manuell zu öffnen. Perfekt für Skripte, Systemadministration und Datenverarbeitung direkt im Terminal.

Was ist sed?

sed liest Eingaben zeilenweise ein (z. B. aus einer Datei oder einer Pipe), führt die gewünschten Textoperationen aus und gibt das Ergebnis auf stdout (also die Konsole) aus.

Das bedeutet:

  • Es bearbeitet Text im Durchlauf,
  • speichert die Änderungen nicht automatisch in der Datei (außer du gibst das explizit an),
  • und ist damit ideal für Automatisierungen, Skripte und Filteroperationen.

Grundsyntax

Die allgemeine Syntax von sed lautet:

sed [OPTIONEN] 'Befehl' [Datei]

Beispiel:

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

Das ersetzt im Text das erste Vorkommen von „Hallo“ durch „Hi“ – und zeigt das Ergebnis direkt im Terminal an.

Die wichtigsten Befehle

1. s – Suchen und Ersetzen

Die meistgenutzte Funktion ist das Ersetzen mit s („substitute“):

sed 's/alt/neu/' datei.txt

Ersetzt das erste Vorkommen von alt pro Zeile durch neu.

Wenn du alle Vorkommen ersetzen willst:

sed 's/alt/neu/g' datei.txt

Das g steht für „global“ – also alle Vorkommen in jeder Zeile.

Beispiel:

echo "Linux ist cool, Linux ist frei" | sed 's/Linux/Unix/g'

Ausgabe:

Unix ist cool, Unix ist frei

2. -i – Direktes Bearbeiten von Dateien (in-place)

Wenn du willst, dass sed die Änderungen direkt in die Datei schreibt:

sed -i 's/foo/bar/g' datei.txt

Tipp: Wenn du eine Sicherheitskopie möchtest, nutze:

sed -i.bak 's/foo/bar/g' datei.txt

Dann wird automatisch eine Datei datei.txt.bak mit dem Originalinhalt erstellt.

3. Zeilen löschen

Mit dem d-Befehl kannst du Zeilen löschen.

  • Lösche eine bestimmte Zeile (z. B. Zeile 3):

    sed '3d' datei.txt
    
  • Lösche einen Zeilenbereich (z. B. Zeilen 2 bis 5):

    sed '2,5d' datei.txt
    
  • Lösche leere Zeilen:

    sed '/^$/d' datei.txt
    

4. Zeilen ausgeben

Mit -n und p kannst du gezielt Zeilen anzeigen:

  • Nur Zeile 3:

    sed -n '3p' datei.txt
    
  • Nur Zeilen, die „Error“ enthalten:

    sed -n '/Error/p' log.txt
    

5. Mehrere Befehle kombinieren

Mehrere Operationen kannst du mit -e oder durch Semikolon trennen:

sed -e 's/foo/bar/g' -e '/debug/d' datei.txt

oder

sed 's/foo/bar/g; /debug/d' datei.txt

Ersetzt foo durch bar und löscht alle Zeilen, die debug enthalten.

Erweiterte Tricks mit sed

1. Nur bestimmte Zeilenbereiche bearbeiten

Du kannst den Befehl auf bestimmte Zeilen begrenzen:

sed '1,5s/test/TEST/g' datei.txt

Nur in Zeilen 1 bis 5 wird „test“ durch „TEST“ ersetzt.

2. Mit regulären Ausdrücken arbeiten

sed versteht reguläre Ausdrücke (Regex).

Beispiel: Alle Zahlen durch # ersetzen:

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

Oder Zeilen löschen, die mit „#“ beginnen (z. B. Kommentare):

sed '/^#/d' datei.txt

3. Mehrzeilige Ersetzungen

sed arbeitet zeilenweise, aber du kannst mit N Zeilen zusammenführen.

Beispiel: Zwei Zeilen zu einer zusammenführen (Zeilenumbruch entfernen):

sed ':a;N;$!ba;s/\n/ /g' datei.txt

4. Platzhalter in Ersetzungen

Manchmal ist / ein ungünstiger Trenner (z. B. bei Pfaden). Du kannst jedes beliebige Zeichen als Trenner verwenden:

sed 's:/usr/local:/opt/apps:g' datei.txt

oder

sed 's|/home/user|/data|g' datei.txt

Praxisbeispiele

Hier ein paar echte Szenarien aus der Serverpraxis:

Beispiel 1: IP-Adresse in Config-Datei ändern

sed -i 's/192\.168\.1\.10/192.168.1.20/g' /etc/app/config.conf

Beispiel 2: Alle „ERROR“-Zeilen aus Log entfernen

sed -i '/ERROR/d' /var/log/app.log

Beispiel 3: HTML-Tags entfernen

sed 's/<[^>]*>//g' seite.html

Beispiel 4: Datum an jede Zeile anhängen

sed "s/$/ $(date +%F)/" datei.txt

sed in Kombination mit anderen Befehlen

sed ist besonders mächtig in Kombination mit Pipes (|):

Beispiel 1: Logdateien filtern und ersetzen

cat /var/log/syslog | grep ssh | sed 's/sshd/SecureShell/g'

Beispiel 2: Mit awk oder grep kombinieren

grep "error" logfile | sed 's/error/ERROR/g' | awk '{print NR ": " $0}'

Unterschiede zu awk und grep

Tool Hauptzweck
grep Zeilen finden, die einem Muster entsprechen
sed Textströme bearbeiten und verändern
awk Daten verarbeiten und formatieren (Feldbasiert)

➡️ Wenn du Text bearbeiten willst → sed. Wenn du nach Text suchstgrep. Wenn du Tabellen oder Felder verarbeitestawk.

sed ist ein unscheinbares, aber extrem mächtiges Werkzeug – ein echtes Schweizer Taschenmesser für Textverarbeitung in Linux.

Mit nur wenigen Zeichen kannst du:

✅ Text ersetzen ✅ Zeilen löschen ✅ Logfiles bereinigen ✅ Konfigurationsdateien anpassen ✅ und ganze Datenströme automatisiert bearbeiten

Einmal verstanden, wirst du sed in keinem Bash-Skript oder DevOps-Workflow mehr missen wollen.

Nützliche Links