SED(1) | Dienstprogramme für Benutzer | SED(1) |
BEZEICHNUNG¶
Sed - Stromeditor zum Filtern und Umwandeln von Text
ÜBERSICHT¶
sed [-V] [--version] [--help] [-n] [--quiet] [--silent]
[-l N] [--line-length=N] [-u] [--unbuffered]
[-E] [-r] [--regexp-extended]
[-e Skript] [--expression=script]
[-f Skriptdatei] [--file=Skriptdatei]
[script-if-no-other-script]
[Datei …]
BESCHREIBUNG¶
Sed ist ein Stromeditor (stream editor). Ein Stromeditor wird für grundlegende Texttransformationen auf einen Eingabestrom (einer Datei oder aus einer Verarbeitungskette) verwandt. Obwohl in einigen Aspekten ähnlich zu einem Editor, der Bearbeitungen nach Skript erlaubt (wie Ed), führt Sed nur einen Durchlauf über die Eingabe(n) durch und ist somit effizienter. Allerdings ist es die Fähigkeit von Sed, Text in einer Verarbeitungskette zu filtern, die ihn besonders gegenüber anderen Arten von Editoren auszeichnet.
-n, --quiet, --silent
- unterdrückt die Ausgabe des Musterbereichs.
--debug
- Kommentiert die Programmausführung
-e Skript, --expression=Skript
- Fügt das Skript zu den auszuführenden Befehlen hinzu
-f Skriptdatei, --file=Skriptdatei
- Fügt den Inhalt der Skriptdatei zu den auszuführenden Befehlen hinzu
--follow-symlinks
- Symbolischen Links bei der Bearbeitung an Ort und Stelle folgen
-i[ENDUNG], --in-place[=ENDUNG]
- Dateien an Ort und Stelle bearbeiten (erstellt Sicherung, falls ENDUNG angegeben)
-l N, --line-length=N
- Gibt die gewünschte Zeilenumbruchlänge für den Befehl »l« an
--posix
- Deaktiviert alle GNU-Erweiterungen
-E, -r, --regexp-extended
- Verwendet erweiterte reguläre Ausdrücke in dem Skript (für Portabilität verwenden Sie POSIX -E).
-s, --separate
- Betrachtet Dateien getrennt statt als einzigen, kontinuierlichen langen Strom
--sandbox
- Arbeitet im »Sandbox«-Modus (deaktiviert e/r/w-Befehle).
-u, --unbuffered
- Lädt minimale Datenmenge aus den Eingabedateien und schreibt die Ausgabepuffer öfter
-z, --null-data
- Zeilen durch Nullbyte-Zeichen trennen
- --help
- zeigt Hilfeinformationen an und beendet das Programm.
- --version
- gibt Versionsinformationen aus und beendet das Programm.
Falls weder die Option -e, --expression, -f noch --file angegeben wurden, wird das erste nicht Optionsargument als zu interpretierendes Sed-Skript verwendet. Alle verbleibenden Argumente sind Namen von Eingabedateien. Falls keine Eingabedateien angegeben wurden, wird die Standardeingabe gelesen.
GNU-Sed-Homepage: <https://www.gnu.org/software/sed/>. Allgemeine Hilfe beim Einsatz von GNU-Software: <https://www.gnu.org/gethelp/>. Fehlerberichte (auf Englisch) per E-Mail an: <bug-sed@gnu.org>.
BEFEHLSÜBERSICHT¶
Dies ist nur eine knappe Übersicht über die Befehle von Sed, als Erinnerung für alle, die Sed bereits kennen. Für ausführlichere Beschreibungen müssen andere Dokumentationen (wie das Texinfo-Dokument) herangezogen werden.
»Befehle« ohne Adressen¶
- : Marke
- Marke für b- und t-Befehle
- #Kommentar
- Der Kommentar läuft bis zum nächsten Zeilenumbruch (oder dem Ende eines -e-Skriptfragments)
- }
- Die schließende Klammer eines { }-Blocks
Befehle ohne oder mit einer Adresse¶
- =
- Gibt die aktuelle Zeilennumer aus
- a \
- Text
- Text anhängen, der eingebettete Zeilenumbrüche mit vorangestelltem Rückschrägstrich (»backslash«) enthält
- i \
- Text
- Text einfügen, der eingebettete Zeilenumbrüche mit vorangestelltem Rückschrägstrich (»backslash«) enthält
- q [Rückgabewert]
- Das Sed-Skript sofort ohne Verarbeitung weiterer Eingabe beenden. Allerdings wird der aktuelle Musterbereich ausgegeben, falls »auto-print« nicht deaktiviert ist. Das Argument Rückgabewert ist eine GNU-Erweiterung.
- Q [Rückgabewert]
- Das Sed-Skript sofort ohne Verarbeitung weiterer Eingabe beenden. Dies ist eine GNU-Erweiterung.
- r Dateiname
- Aus Dateiname eingelesenen Text anhängen
- R Dateiname
- Eine Zeile aus Dateiname einlesen und anhängen. Jeder Aufruf des Befehls liest eine Zeile der Datei. Dies ist eine GNU-Erweiterung.
Befehle, die Adressbereiche akzeptieren¶
- {
- Beginnt einen Befehlsblock (Ende mit einem })
- b Marke
- Verzweigt zu Marke. Falls Marke fehlt, verzweigt zum Ende des Skripts
- c \
- Text
- Ersetzt die ausgewählte Zeile mit Text, der eingebettete Zeilenumbrüche mit vorangestelltem Rückschrägstrich (»backslash«) enthält
- d
- Löscht den Musterbereich. Beginnt den nächsten Zyklus.
- D
- Falls der Musterbereich keinen Zeilenumbruch enthält, wird ein neuer Zyklus begonnen, als ob der Befehl »d« angegeben worden wäre. Andernfalls wird der Text im Musterbereich bis zu dem ersten Zeilenumbruch gelöscht und der Zyklus mit dem entstandenen Musterbereich neu gestartet, ohne eine neue Eingabezeile zu lesen.
- h H
- Kopiert/Hängt den Musterbereich in den Haltebreich (hold space) (an)
- g G
- Kopiert/Hängt den Haltebereich in den Musterbereich (an)
- l
- Führt die aktuelle Zeile in einer »visuell eindeutigen« Art auf
- l Breite
- Führt die aktuelle Zeile in einer »visuell eindeutigen« Art auf und bricht dabei nach Breite Zeichen um. Dies ist eine GNU-Erweiterung.
- n N
- Liest/Hängt die nächste Zeile der Eingabe in den Musterbereich (an)
- p
- Gibt den aktuellen Musterbereich aus.
- P
- Gibt bis zum ersten eingebetteten Zeilenumbruch im aktuellen Musterbereich aus.
- s/RegAusdr/Ersatz/
- Sucht die Entsprechung von RegAusdr im Musterbereich und falls erfolgreich, ersetzt den passenden Teil mit Ersatz. Ersatz kann das besondere Zeichen & enthalten, um auf den Teil des Musterbereichs zu verweisen, der passte, und die besonderen Maskiersequenzen \1 bis \9, die auf die entsprechenden passenden Teilausdrücke in RegAusdr verweisen.
- t Marke
- Falls s/// eine erfolgreiche Ersetzung durchgeführt hat, seit die letzte Eingabezeile gelesen wurde und seit dem letzten t- oder T-Befehl, dann wird zu Marke verzweigt. Falls Marke fehlt, wird zum Ende des Skripts verzweigt.
- T Marke
- Falls kein s/// eine erfolgreiche Ersetzung durchgeführt hat, seit die letzte Eingabezeile gelesen wurde und seit dem letzten t- oder T-Befehl, dann wird zu Marke verzweigt. Falls Marke fehlt, wird zum Ende des Skripts verzweigt.
- w Dateiname
- Schreibt den aktuellen Musterbereich nach Dateiname
- W Dateiname
- Schreibt die erste Zeile des aktuellen Musterbereichs in Dateiname. Dies ist eine GNU-Erweiterung.
- x
- Tauscht den Inhalt des Halte- und Musterbereichs
- y/Quelle/Ziel/
- Übersetzt die Zeichen im Musterbereich, die in Quelle auftauchen, in die entsprechenden Zeichen in Ziel
Adressen¶
Befehle von Sed können ohne Adresse angegeben werden. In diesem Fall werden sie für alle Eingabezeilen ausgeführt. Wird eine Adresse angegeben, werden sie nur für Zeilen ausgeführt, die auf diese Adresse passen. Werden zwei Adressen (das Maximum) angegeben, dann wird der Befehl für alle Eingabezeilen ausgeführt, die auf den einschließenden Bereich passen, der bei der ersten Adresse beginnt und bis zur zweiten Adresse läuft. Es gibt drei Dinge, die Sie bei Adressbereichen beachten sollten: Die Syntax lautet Adr1,Adr2 (d.h. die Adressen werden durch ein Komma getrennt), die Zeile, auf die Adr1 passt, wird immer akzeptiert, selbst falls Adr2 eine davor liegende Zeile auswählen sollte und falls Adr2 ein regulärer Ausdruck ist, wird er nicht gegen die Zeile, auf die Adr1 passte, geprüft.
Nach der Adresse (oder dem Adressbereich) und vor dem Befehl kann ein ! eingefügt werden, das angibt, dass der Befehl nur ausgeführt werden darf, falls die Adresse (oder der Adressbereich) nicht passt.
Die folgenden Adresstypen werden unterstützt:
- Nummer
- Passt nur auf die angegebene Zeile Nummer (die über Dateien hinweg kummulativ ansteigt, außer die Option -s ist auf der Befehlszeile angegeben worden).
- Erster~Abstand
- Passt auf jede Abstands Zeile, beginnend mit Erster. Beispielsweise wird »sed -n 1~2p« alle ungeraden Zeilen in dem Eingabestrom ausgeben und die Adresse 2~5 wird auf jede fünfte Zeile, beginnend mit der zweiten, passen. Erster kann Null sein, in diesem Fall verhält sich Sed als ob er identisch mit Abstand wäre (dies ist eine Erweiterung).
- $
- Passt auf die letzte Zeile
- /RegAusdr/
- Passt auf Zeilen, die auf den regulären Ausdruck RegAusdr passen. Der Abgleich erfolgt auf dem aktuellen Musterraum, der mit Befehlen wie »s///« verändert werden kann.
- \cRegAusdrc
- Passt nur auf Zeilen, die auf den regulären Ausdruck RegAusdr passen. Das c kann jedes Zeichen sein.
GNU-Sed unterstützt auch einige besondere 2-Adressformen:
- 0,Adr2
- Beginnt in dem Zustand »passe auf erste Adresse« bis Adr2 gefunden wird. Dies ist ähnlich zu 1,Adr2, abgesehen davon, dass wenn Adr2 auf die allererste Zeile der Eingabe passt, der Ausdruck 0,Adr2 sich am Ende seines Bereichs befinden wird, während der Ausdruck 1,Adr2 sich noch am Anfang seines Bereichs befinden wird. Dies funktioniert nur, falls Adr2 ein regulärer Ausdruck ist.
- Adr1,+N
- Passt auf Adr1 und die N auf Adr1 folgenden Zeilen
- Adr1,~N
- Passt auf Adr1 und die Adr1 folgenden Zeilen bis zu der nächsten Zeile, deren Eingabezeilennummer ein Vielfaches von N ist
REGULÄRE AUSDRÜCKE¶
POSIX.2-BREs sollten unterstützt werden. Dies erfolgt allerdings aus Leistungsgründen nicht vollständig. Die Sequenz \n in einem regulären Ausdruck passt auf das Zeilenumbruchzeichen und ähnliches gilt für \a, \t und andere Sequenzen. Die Option -E schaltet auf die Verwendung von erweiterten regulären Ausdrücken um; sie wurde seit Jahren in GNU Sed unterstützt und ist jetzt in POSIX enthalten.
FEHLER¶
Schicken Sie Fehlerberichte (auf Englisch) an bug-sed@gnu.org. Geben Sie auch bitte die Ausgabe von »sed --version« im E-Mail-Text an, falls irgendwie möglich.
AUTOR¶
Geschrieben von Jay Fenlason, Tom Lord, Ken Pizzini, Paolo Bonzini, Jim Meyering und Assaf Gordon.
Dieses Sed-Programm wurde mit Unterstützung für SELinux erstellt. SELinux ist auf diesem System deaktiviert.
GNU-Sed-Homepage: <https://www.gnu.org/software/sed/>. Allgemeine Hilfe beim Einsatz von GNU-Software: <https://www.gnu.org/gethelp/>. Fehlerberichte (auf Englisch) per E-Mail an: <bug-sed@gnu.org>.
COPYRIGHT¶
Copyright © 2022 Free Software Foundation, Inc. Lizenz
GPLv3+: GNU GPL
Version 3 oder neuer.
Dies ist freie Software: Sie können sie verändern und
weitergeben. Es gibt KEINE GARANTIE, soweit gesetzlich zulässig.
SIEHE AUCH¶
awk(1), ed(1), grep(1), tr(1), perlre(1), sed.info, eines der verschiedenen Bücher über Sed, die Sed-FAQ (http://sed.sf.net/grabbag/tutorials/sedfaq.txt), http://sed.sf.net/grabbag/.
Die vollständige Dokumentation für sed wird als Texinfo-Handbuch gepflegt. Wenn die Programme info(1) und sed auf Ihrem Rechner ordnungsgemäß installiert sind, können Sie mit dem Befehl
- info sed
auf das vollständige Handbuch zugreifen.
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> und Mario Blättermann <mario.blaettermann@gmail.com> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.
Dezember 2022 | GNU sed 4.9 |