ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.
Wikised

sed

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png 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

Installation

Das Programm sed ist im essentiellen Paket

  • sed

von Ubuntu enthalten und ist deshalb auf jedem System installiert.

Aufruf von sed

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.

Parameter

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.

Anwendungsbeispiele

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.

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.

ubuntuusers.local › Wikised