ubuntuusers.de

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:

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.

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.

Direktes Bearbeiten einer Datei

  • 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.

Diese Revision wurde am 18. September 2021 18:41 von chris34 erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Shell