Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
sed (von stream editor) ist ein nicht-interaktiver Texteditor für die Verwendung auf der Kommandozeile oder in Skripten. sed zählt zu den "Urgesteinen" in der Unix- / Linux-Welt und ist quasi in jeder Linux-Installation (auch Minimalinstallationen) enthalten.
Verwandte Befehle sind:
grep: Durchsuchen und Filtern von Texten
awk: Auswertung und Bearbeitung von Textdaten
cut: Spaltenweise Manipulation von Textdaten
Das Programm sed ist im essentiellen Paket
sed
von Ubuntu enthalten und ist deshalb auf jedem System installiert.
sed [Optionen] sed-Skript [Textdatei...]
oder
sed [Optionen] [-e sed-Skript | -f Skriptdatei] [Textdatei...]
Das Ergebnis wird auf der Standardausgabe ausgegeben. Wird keine Datei angegeben, so wird die Standardeingabe verwendet.
Die Syntax von sed-Skripten findet man in der info-Seite von sed oder über die Links am Ende des Artikels. sed-Skripte verwenden reguläre Ausdrücke ähnlich denen von grep. Es ist empfehlenswert, sed-Skripte durch Hochkommas ('
) zu schützen, damit die Shell Sonderzeichen nicht selbst auswertet.
Diese Parameterliste ist unvollständig. Weiteres findet sich auf der man- oder info-Seite von sed.
Optionen von sed | ||
Kurzform | Langform | Beschreibung |
-n | --quiet , --silent | Verhindert das automatische Ausgeben des Ergebnisses. Ausgaben erfolgen nur über das Kommando p . |
-e Skript | --expression=Skript | Angeben eines sed-Skriptes, mehrere sed-Skripte sind möglich. Bei nur einem sed-Skript kann -e weggelassen werden. |
-f Skriptdatei | --file=Skriptdatei | Das sed-Skript steht in der Skriptdatei, nicht auf der Kommandozeile. |
-i | --in-place | Die Textdatei wird verändert, anstatt das Ergebnis auf Standardausgabe auszugeben. |
Ersetzen von Text in einer Datei:
sed s/Anton/Berta/g Textdatei
Jedes Auftreten von "Anton" wird durch "Berta" ersetzt (aber auch "Antonius" wird zu "Bertaius"). Wird g
(global) weggelassen, wird nur das erste Auftreten in einer Zeile ersetzt.
sed /Name/s/\bAnton\b/Berta/g Textdatei
Alle Wörter "Anton" werden durch "Berta" ersetzt (nicht "Antonius"), aber nur in Zeilen, die "Name" enthalten.
sed -n s/Anton/Berta/gp Textdatei
Ersetzt alle "Anton" durch "Berta" und gibt nur die betroffenen Zeilen aus.
Entfernen von Zeilen:
sed '/^#/d' Textdatei
Zeilen die mit #
anfangen, werden entfernt.
Zeilen einfügen:
sed '3iNeue Zeile' Textdatei
Vor der dritten Zeile wird "Neue Zeile" eingefügt.
sed '4aNeue Zeile' Textdatei
Hier wird "Neue Zeile" nach der vierten Zeile eingefügt.
sed '$aNeue Zeile' Textdatei
Hier wird "Neue Zeile" nach der letzten Zeile eingefügt.
Reguläre Ausdrücke:
sed 's/^E-Mail:.*$/E-Mail-Adresse ist privat/' Textdatei
Alle Zeilen, die mit "E-Mail:" anfangen, werden ersetzt.
Bearbeiten von Dateinamen:
sed 's!/home/anton/!/home/berta/!' Textdatei
Normalerweise wird "/" als Trennzeichen verwendet. Es lässt sich aber beliebig austauschen, was beim Bearbeiten von Dateinamen nützlich ist.
sed-Projektseite auf sourceforge
sed1line - Nützliche, einzeilige Skripte für sed
sed-Skripte - Einfache bis sehr komplizierte Beispiele
Das sed Tutorium - Eine sehr ausführliche Einführung
Diese Revision wurde am 3. Mai 2016 17:43 von Cheetah85 erstellt.