How2-Tipps

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

sed ist der mächtige Stream-Editor unter Linux – ideal zum automatischen Suchen, Ersetzen und Bearbeiten von Textdateien direkt im Terminal.

1 min Lesezeit
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:

``bash sed [OPTIONEN] 'Befehl' [Datei] ``

Beispiel:

``bash 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“):

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

Ersetzt das erste Vorkommen von alt pro Zeile durch neu.

Wenn du alle Vorkommen ersetzen willst:

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

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

Beispiel:

``bash 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:

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

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

``bash 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):

``bash sed '3d' datei.txt ``

  • Lösche einen Zeilenbereich (z. B. Zeilen 2 bis 5):

``bash sed '2,5d' datei.txt ``

  • Lösche leere Zeilen:

``bash sed '/^$/d' datei.txt ``

4. Zeilen ausgeben

Mit -n und p kannst du gezielt Zeilen anzeigen:

  • Nur Zeile 3:

``bash sed -n '3p' datei.txt ``

  • Nur Zeilen, die „Error“ enthalten:

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

5. Mehrere Befehle kombinieren

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

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

oder

``bash 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:

``bash 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:

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

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

``bash 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):

``bash 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:

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

oder

``bash 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

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

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

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

Beispiel 3: HTML-Tags entfernen

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

Beispiel 4: Datum an jede Zeile anhängen

``bash 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

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

Beispiel 2: Mit awk oder grep kombinieren

``bash 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