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:
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.
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.
Bearbeiten von PHP Einstellungen (memory_limit) z.B. php.ini
sed -i "s/memory_limit = .*M/memory_limit = 2048M/" /etc/php/7.2/apache2/php.ini
Hier wird der memory_limit von dem Standard-Wert auf memory_limit = 2048M gesetzt.
Bearbeiten von PHP Einstellungen (upload_max_filesize) z.B. php.ini
sed -i "s/upload_max_filesize =.*/upload_max_filesize = 10240M/" /etc/php/7.2/apache2/php.ini
Hier wird der memory_limit von dem Standard-Wert auf upload_max_filesize = 10240M gesetzt.
Links¶
sed-Projektseite auf sourceforge 🇬🇧
sed1line 🇩🇪 - Nützliche, einzeilige Skripte für sed
sed FAQ 🇬🇧
sed-Skripte 🇬🇧 - Einfache bis sehr komplizierte Beispiele
Das sed Tutorium 🇩🇪 - Eine sehr ausführliche Einführung