Hosten Sie Ihren eigenen KI-Agenten mit OpenClaw - kostenlose 1-Klick-Installation!

So verwendest du den Linux sed-Befehl im Jahr 2026

So verwendest du den Linux sed-Befehl im Jahr 2026 (Titelbild)

Jeder Sysadmin steht irgendwann vor demselben Problem: 400 Konfigurationsdateien, eine falsche IP-Adresse in jeder einzelnen, und null Lust, sie alle von Hand zu öffnen. Genau hier spielt der sed-Befehl seine Stärke aus.

Mit dem Linux sed-Befehl (kurz für Stream Editor) kannst du Text in Dateien direkt im Terminal suchen, ersetzen, einfügen und löschen. Keine GUI, kein Texteditor, kein Klicken durch Menüs. Daten rein, transformierte Ausgabe raus. Er verarbeitet Regex-Muster, funktioniert mit Pipe-Eingaben und kommt problemlos mit Dateien jeder Größe klar.

Dieser Leitfaden behandelt die sed-Befehlssyntax, Optionen, praktische Beispiele und Anwendungsfälle aus der Praxis. Falls du noch nie mit sed gearbeitet hast, wirst du am Ende fit genug sein, um loszulegen. Falls du die Grundlagen schon kennst, füllen die Abschnitte zu Batch-Verarbeitung und Backreferences die Lücken.

Sed arbeitet in einer einfachen Schleife: Zeile einlesen, Befehle anwenden, Ergebnis ausgeben, wiederholen. Die gesamte Datei wird dabei nie in den Arbeitsspeicher geladen. Deshalb verarbeitet sed auch mehrere Gigabyte große Logdateien ohne Probleme. Genau dieser Zeile-für-Zeile-Ansatz macht sed so effizient für automatisierte Skripte und ist einer der Gründe, warum es seit den 1970er Jahren im Einsatz ist.

sed-Befehlssyntax und Optionen

Die allgemeine sed-Befehlssyntax sieht so aus:

sed [options] 'script' filename

Der Skriptteil enthält den Unterbefehl, das Suchmuster, den Ersetzungsstring und die Flags. Alles wird in einfache Anführungszeichen gesetzt und durch ein Trennzeichen getrennt, in der Regel einen Schrägstrich (<wpml_ignored_tag wpml_name=“code“ wpml_value=“Lw==“ wpml_attrs=““/>). Du kannst auch einen Backslash oder eine Pipe als Trennzeichen verwenden, wenn dein Muster Schrägstriche enthält.

Hier sind die gängigsten sed-Optionen, die du tatsächlich brauchst:

  • -i — überschreibt die Originaldatei direkt. Das zugleich gefährlichste und nützlichste Flag.
  • -n — unterdrückt die automatische Ausgabe. Nur Zeilen, die du explizit mit <wpml_ignored_tag wpml_name=“code“ wpml_value=“cCA=“ wpml_attrs=““/>ausgibst, werden angezeigt.
  • -e – erlaubt dir, mehrere Befehle in einem sed-Aufruf zu verketten.
  • -f – liest Befehle aus einer externen Skriptdatei.
  • –help – zeigt die Nutzungsinformationen an.
  • –debug – kommentiert die Ausführung im Terminal.
  • -b – öffnet Dateien im Binärmodus.
  • -l – legt die Zeilenumbruchlänge für den <wpml_ignored_tag wpml_name=“code“ wpml_value=“bCA=“ wpml_attrs=““/>Befehl fest.

Das Arbeitspferd ist der s-Befehl (substitute, also ersetzen). Seine Syntax:

's/regex_pattern/replacement/flags'

Die sed-Flags, die das Ersetzungsverhalten steuern:

  • g — globale Ersetzung. Trifft jedes Vorkommen in der Zeile, nicht nur das Erste.
  • p – gibt die geänderte Zeile als zusätzliche Ausgabe aus.
  • i – Groß-/Kleinschreibung wird ignoriert.
  • Zahl – ersetzt nur das n-te Vorkommen (z. B. <wpml_ignored_tag wpml_name=“code“ wpml_value=“MiA=“ wpml_attrs=““/> ersetzt den zweiten Treffer).

Du kannst Flags kombinieren. Das gi-Flag führt eine globale Ersetzung ohne Berücksichtigung der Groß-/Kleinschreibung durch.

Gut zu wissen: Das Trennzeichen muss kein Schrägstrich sein. Wenn du mit Dateipfaden oder URLs arbeitest, die voller Schrägstriche sind, nimm stattdessen eine Pipe oder ein Komma. sed 's|/old/path|/new/path|g' Das liest sich deutlich sauberer, als jeden Schrägstrich zu escapen. Wähle einfach ein Zeichen, das in deinen Such- oder Ersetzungsstrings nicht vorkommt.

So installierst du sed unter Linux

Wahrscheinlich ist sed bereits auf deinem System installiert. Es wird mit praktisch jeder Linux-Distribution ausgeliefert. Falls du aber ein stark reduziertes Container-Image oder eine Minimalinstallation nutzt, erfährst du hier, wie du sed verwendest, nachdem du es installiert hast:

Aktualisiere deine Paketliste:

sudo apt-get update

Installiere das sed-Paket:

sudo apt-get install sed

Überprüfe die Installation:

sed --version

Wenn dabei eine Versionsnummer ausgegeben wird, bist du startklar. Auf RHEL-/CentOS-basierten Distributionen ersetzt du swap apt-get for yum or dnf. Der Paketname des sed-Stream-Editors bleibt über alle Distributionen hinweg gleich.

Unter Arch Linux gehört sed zur Basisgruppe und sollte bereits vorhanden sein. Unter Alpine (häufig in Docker-Containern) nutzt du ‚apk add sed‘. Falls du macOS verwendest, ist das vorinstallierte sed die BSD-Version, die sich leicht anders verhält als GNU sed. Die meisten Tutorials im Netz setzen GNU sed voraus. Installiere es deshalb über Homebrew mit ‚brew install gnu-sed‘, um dir Ärger zu ersparen.

sed-Befehlsbeispiele

Hier sind 10 praktische sed-Befehlsbeispiele, die die wichtigsten Operationen für den Alltag abdecken. Keiner der folgenden Befehle verändert die Originaldatei. Füge -i hinzu, wenn du Änderungen wirklich übernehmen willst.

Suchen und Ersetzen eines Strings mit sed

Die häufigste Anwendung von sed. Die sed-Such- und Ersetzungssyntax ist denkbar einfach:

sed 's/old_string/new_string/' myfilename.txt

Angenommen, du hast eine Datei namens scenery.txt und willst „images“ durch „photos“ ersetzen:

sed 's/images/photos/' scenery.txt

Dieser sed-Such- und Ersetzungsbefehl trifft nur den ersten Treffer pro Zeile. Wenn dein Suchstring Schrägstriche enthält, wechsle zu einem anderen Trennzeichen:

sed 's|/usr/local|/opt|' config.txt

Die Originaldatei bleibt unverändert. Sed gibt die Ergebnisse standardmäßig auf stdout aus. Sobald du sicher bist, dass die Ausgabe stimmt, hänge -i an, um die Änderungen in die Datei zurückzuschreiben. Immer erst testen, dann schreiben.

Das n-te Vorkommen in einer Zeile ersetzen

Wenn ein Wort in derselben Zeile mehrfach vorkommt und du nur eine bestimmte Stelle ändern willst, füge ein Zahlen-Flag hinzu:

sed 's/old_string/new_string/2' myfilename.txt

Die 2 weist sed an, den ersten Treffer zu überspringen und nur das zweite Vorkommen zu ersetzen. Zum Beispiel: Ersetze das erste „music“ durch „song“:

sed 's/music/song/1' playlist.txt

Alle Vorkommen mit dem g-Flag ersetzen

Ohne das g-Flag stoppt sed nach dem ersten Treffer pro Zeile. Das globale sed-Ersetzen-Flag behebt das:

sed 's/eagle/falcon/g' birds.txt

Jedes „eagle“ in jeder Zeile wird zu „falcon“. Genau das erwarten die meisten, wenn sie an Suchen und Ersetzen denken. Ohne das g-Flag ändert sed nur den ersten Treffer pro Zeile und geht weiter. Dieses Standardverhalten lässt Einsteiger regelmäßig stolpern. Wenn deine Ersetzung einige Treffer zu übersehen scheint, fehlt fast sicher das g-Flag.

Vom n-ten bis zum letzten Vorkommen ersetzen

Du kannst eine Zahl mit dem g-Flag kombinieren, um ab einem bestimmten Vorkommen zu ersetzen:

sed 's/pisces/aquarius/2g' astrology.txt

Das überspringt das erste „pisces“ in jeder Zeile und ersetzt vom zweiten Vorkommen bis zum letzten. Ein Nischenfall, aber praktisch, wenn deine Daten eine vorhersehbare Struktur haben.

Erstes Zeichen jedes Worts in Klammern setzen

Ein netter sed-Regex-Trick mit erweiterten regulären Ausdrücken und einer sed-Capture-Gruppe:

echo "An example of the sed command" | sed -E 's/(\b\w)/(\1)/g'

Ausgabe: (A)n (e)xample (o)f (t)he (s)ed (c)ommand

Um statt einer Pipe-Eingabe eine Datei zu verarbeiten, lass das echo weg und hänge den Dateinamen am Ende an.

Einen String in einer bestimmten Zeile ersetzen

Stelle dem s-Befehl eine Zeilennummer voran, um mit sed gezielt eine Zeile zu ersetzen:

sed '2s/cake/bread/' foods.txt

Nur Zeile 2 wird verändert. Alles andere wird unverändert durchgereicht. Das ist praktisch, wenn du genau weißt, in welcher Zeile der zu ändernde Wert steht.

Ersetzte Zeilen mit dem /p-Flag ausgeben

Das p-Flag gibt jede veränderte Zeile doppelt aus:

sed 's/phones/tablets/p' gadgets.txt

Zeilen ohne Änderung werden ganz normal einmal ausgegeben. Veränderte Zeilen erscheinen doppelt: einmal als reguläre Ausgabe, einmal als zusätzliche Ausgabe. Das ist nützlich, um schnell zu sehen, welche Zeilen dein Muster tatsächlich getroffen hat.

Einen String in einem Zeilenbereich ersetzen

Du kannst eine Ersetzung auf einen bestimmten Zeilenbereich eingrenzen. Das ist ein gezielter sed-Ersetzen-in-Datei-Ansatz:

sed '3,5 s/germany/france/' countries.txt

Nur die Zeilen 3 bis 5 werden verarbeitet. Die Zeilen davor und danach bleiben unberührt. Praktisch, um einen bekannten Block in einer Konfigurationsdatei zu bearbeiten.

Nur die ersetzten Zeilen ausgeben

Kombiniere die sed-Option -n mit p, um die Standardausgabe zu unterdrücken und nur geänderte Zeilen anzuzeigen:

sed -n 's/green/blue/3p' colors.txt

Stiller Modus. Nur Zeilen, in denen tatsächlich eine Ersetzung stattgefunden hat, werden ausgegeben. Perfekt, um dein Muster zu prüfen, bevor du mit -i die Datei überschreibst.

Zeilen mit sed aus einer Datei löschen

Der d Befehl ist das Werkzeug zum Löschen von Zeilen mit sed. Eine einzelne Zeile nach Nummer entfernen:

sed '1d' cities.txt

Einen Bereich löschen:

sed '1,3d' cars.txt

Um ab Zeile 2 bis zum Dateiende zu löschen:

Die letzte Zeile löschen:

sed '$d' filename.txt

Alle Zeilen löschen, die einem Muster entsprechen (sed-Zeilen löschen per Regex):

sed '/oabo/d' filestrings.txt

Das entfernt jede Zeile mit „oabo“ aus der Ausgabe. Kombiniere es mit -i und du hast einen Einzeiler, der eine Datei in Millisekunden aufräumt.

Ein gängiger Praxisfall: Kommentarzeilen aus Konfigurationsdateien entfernen, bevor sie weiterverarbeitet werden. Zum Beispiel entfernt sed ‚/^#/d‘ config.conf alle Zeilen, die mit einem Hash beginnen. Du kannst auch mehrere Löschmuster mit dem -e-Flag verketten und so mehrere Muster in einem Durchgang bereinigen.

Anwendungsfälle für den sed-Befehl

Die obigen Beispiele decken die Syntax ab. Schauen wir uns jetzt an, wie du sed in echten Aufgaben der Serververwaltung einsetzt.

sed für die Batch-Dateiverarbeitung

Zwei Ansätze. Erstens: Mehrere Dateien explizit auflisten:

sed 's/old_string/new_string/g' file1.txt file2.txt file3.txt

Zweitens: Mit find ein Verzeichnis durchsuchen. Das ist der echte Power-Move für sed-Ersetzen in Dateien im großen Stil:

find /etc/myapp/ -type f -exec sed -i 's/old_string/new_string/g' {} \;

Achtung: Das -i-Flag überschreibt Dateien direkt. Lege vorher Backups an. Mit -i.bak kannst du sed anweisen, vor jeder Änderung automatisch ein Backup der Datei anzulegen.

Hier spielt sed seine wahre Stärke für Sysadmins aus. Stell dir vor, du hast einen Dienst auf eine neue IP migriert und musst die Adresse in jeder Nginx-Konfiguration, jedem Cronjob und jedem Skript aktualisieren, das darauf verweist. Ein einziger find+sed-Befehl und du bist in Sekunden fertig. Von Hand würde das den Rest des Nachmittags kosten.

sed für die Logdatei-Analyse

Sed kann mehr als nur bearbeiten. Es ist ein brauchbares sed-Regex-Extraktionstool. Bestimmte Muster aus Logdateien extrahieren und in eine neue Datei umleiten:

sed -n 's/Error: \(.*\)/\1/p' logfile.log > error_logs.txt

Dieser Befehl findet jede Zeile, die mit „Error:“ beginnt, und extrahiert alles dahinter. Passe das Muster an, um Zeitstempel, IP-Adressen oder was immer du suchst herauszufiltern. Für komplexes Parsing nicht so mächtig wie awk oder grep, aber für schnelle Extraktionsjobs erledigt sed das in einer Zeile.

Ein praktisches Muster: Alle 404-Statuscodes aus einem Zugriffsprotokoll ziehen. Oder nur die Zeitstempel aus Einträgen extrahieren, die einen bestimmten Dienst erwähnen. Seds eigentlicher Vorteil liegt darin, in einem einzigen Schritt suchen und transformieren zu können, statt erst mit grep Treffer zu finden und dann mit cut oder awk die nötigen Felder zu extrahieren.

sed für die Bearbeitung von HTML- und XML-Tags

Du musst ein Attribut in einer Reihe von HTML-Dateien ändern? sed-String-Ersetzung kommt mit Markup-Tags problemlos klar:

sed 's/\(<h[1-6].*color:\) [^;]*/\1 black/g' webpage.html

Das findet jedes h1- bis h6-Tag mit einem Inline-Farbstil und tauscht den Wert gegen Schwarz aus. Bei XML funktioniert das genauso. Achte nur auf spitze Klammern und escape sie korrekt.

Dieser Ansatz eignet sich gut für schnelle Korrekturen in statischen HTML-Dateien. Ob du einen Klassennamen in jedem div ändern, eine CDN-URL in Script-Tags aktualisieren oder veraltete Attribute aus altem Markup entfernen willst: sed erledigt das, ohne dass du einen vollständigen XML-Parser brauchst. Für tief verschachtelte oder komplexe XML-Strukturen ist ein dediziertes Parsing-Tool wie xmlstarlet die sicherere Wahl. Sed behandelt alles als reinen Text. Es warnt dich also nicht, wenn dein Regex versehentlich Inhalte innerhalb eines Kommentars oder eines CDATA-Blocks trifft.

sed mit externen Skriptdateien verwenden

Wenn du mehrere sed-Befehle ausführst, wird es schnell unübersichtlich, alles in eine Zeile zu packen. Lagere sie stattdessen in eine Datei aus.

Erstelle eine Skriptdatei:

nano script.sed

Trage deine Befehle ein, einen pro Zeile (Anführungszeichen sind nicht nötig):

s/old_pattern1/new_pattern1/g
/old_pattern2/d

Ausführen:

sed -f script.sed target_file.txt

Übersichtlicher, versionierbar und deutlich weniger anfällig für Quoting-Probleme. Sobald du mehr als zwei oder drei Befehle brauchst, nutze eine Skriptdatei.

Skriptdateien machen deine sed-Operationen außerdem wiederholbar. Lege sie im Repository deines Projekts ab, schreibe einen Kommentar an den Anfang, der erklärt, was sie tun, und du hast eine dokumentierte Texttransformation, die jeder im Team ausführen kann. Das ist deutlich besser als ein Einzeiler in deiner Bash-History, den nach drei Monaten niemand mehr nachvollziehen kann.

sed-Backreferences in Regex

Mit einer sed-Backreference kannst du einen Teil eines Treffers erfassen und in der Ersetzung wiederverwenden. Der erfasste Teil wird als sed-Capture-Gruppe bezeichnet und in escaped Klammern gesetzt.

Klassisches Beispiel: „Last, First“ zu „First Last“ umordnen:

echo "Doe, John" | sed 's/\(.*\), \(.*\)/\2 \1/'

Ausgabe: John Doe

\1 verweist auf die erste Capture-Gruppe („Doe“), \2 auf die zweite („John“). Ein regulärer sed-Ausdruck mit Backreferences kann Datumsformate umstellen, CSV-Spalten umsortieren oder Teilstrings aus strukturiertem Text extrahieren. Es ist eines der Features, das sed von „praktisch“ zu „richtig mächtig“ macht.

Du kannst in einem einzelnen sed-Ausdruck bis zu neun Capture-Gruppen verwenden. In der Praxis bist du ab drei oder vier Gruppen mit Perl oder Python besser bedient. Für Zwei-Gruppen-Operationen wie das Vertauschen von Feldern, das Umkehren von Namensformaten oder das Umstrukturieren einfacher Datensätze sind sed-Backreferences schnell geschrieben und schnell ausgeführt.

Linux sed-Befehl FAQ

Was ist der sed-Befehl in Linux?

Der sed-Befehl in Linux ist ein Stream-Editor, der Text direkt über die Kommandozeile filtert und transformiert. Er liest die Eingabe zeilenweise, wendet deine Bearbeitungsregeln an und gibt das Ergebnis auf der Standardausgabe aus. Du musst eine Datei nicht erst in einem Editor öffnen, um sie zu ändern. sed gehört seit den 1970er Jahren zu Unix und ist nach wie vor einer der schnellsten Wege, Text auf einem Linux-System zu bearbeiten. sed unterstützt reguläre Ausdrücke, arbeitet mit Pipe-Eingaben und verarbeitet Dateien jeder Größe, weil es sie zeilenweise abarbeitet, statt alles in den Speicher zu laden.

Wie unterscheidet sich sed von grep?

Beides sind Textverarbeitungswerkzeuge, aber sie erfüllen unterschiedliche Aufgaben. Grep durchsucht Dateien nach Mustern und gibt die passenden Zeilen aus. Mehr nicht. sed kann suchen und verändern: Text ersetzen, Zeilen löschen, Inhalte einfügen, Strings umsortieren. Stell dir grep als Taschenlampe vor (findet Dinge) und sed vs. grep als Schweizer Taschenmesser (findet und behebt Dinge).

Wie wird sed in einem Bash-Skript verwendet?

Innerhalb von Bash-Skripten übernimmt sed typischerweise drei Aufgaben: bestimmte Zeilen auf stdout ausgeben, unerwünschten Text löschen und Strings ersetzen. Du kannst die sed-Ausgabe Variablen zuweisen, sie an andere Befehle pipen oder damit Konfigurationsdateien bei automatisierten Deployments anpassen. Die Syntax ist identisch mit dem, was du auch interaktiv eingeben würdest. Ein gängiges Muster ist die Verwendung von Shell-Variablen innerhalb von sed-Befehlen mit doppelten Anführungszeichen: sed "s/$OLD/$NEW/g" file.txt. Einfache Anführungszeichen verhindern die Variablenexpansion. Wechsle also zu doppelten Anführungszeichen, wenn deine Muster aus Variablen stammen.

Wie unterscheidet sich sed von awk?

sed übernimmt einfache Textsubstitution, Löschung und Einfügung. awk ist eine vollwertige Programmiersprache, die für spaltenbasierte Datenverarbeitung entwickelt wurde. Es unterstützt Variablen, Bedingungen, Schleifen und Arithmetik. Die Faustregel: Wenn du einen String ersetzen willst, nimm sed. Wenn du eine Zahlenspalte summieren oder etwas tun willst, das sich wie eine Tabellenkalkulationsoperation anfühlt, greife zu awk. sed vs. awk läuft auf Einfachheit gegenüber Funktionsumfang hinaus.

Wie entferne ich leere Zeilen mit sed?

Verwende den d-Befehl mit einem Muster, das auf leere Zeilen passt:
sed '/^$/d' myfilename.txt
Der Regex ^$ trifft Zeilen, in denen zwischen Anfang und Ende nichts steht. Das ist einer der meistgenutzten sed-Einzeiler zum Entfernen leerer Zeilen. Füge -i hinzu, um die Datei direkt zu bearbeiten.

Nach oben scrollen