Sed: Unterschied zwischen den Versionen
Zeile 204: | Zeile 204: | ||
* Enthält eine Zeile das Muster »Aufruf«, wird sie im Zwischenpuffer abgelegt. | * Enthält eine Zeile das Muster »Aufruf«, wird sie im Zwischenpuffer abgelegt. | ||
* Steht in einer Zeile »Angabe«, so wird diese Zeile mit dem Inhalt des Zwischenpuffers vertauscht. | * Steht in einer Zeile »Angabe«, so wird diese Zeile mit dem Inhalt des Zwischenpuffers vertauscht. | ||
* Der Inhalt des Zwischenpuffers wird hinter der letzten Zeile eingefügt. | * Der Inhalt des Zwischenpuffers wird hinter der letzten Zeile eingefügt. | ||
== Sed-Skripte == | == Sed-Skripte == |
Version vom 31. März 2023, 10:58 Uhr
sed - strom-orientierter Editor zur Bearbeitung von Dateien anhand von Regeln
Beschreibung
- Da es ein "nicht-interaktives" Programm ist, kann es, falls gewünscht, zur Automatisierung der Bearbeitung verwendet werden.
- Der Name sed ist eine Abkürzung für stream editor, und das Dienstprogramm leitet viele seiner Befehle vom ed line-editor ab (ed war der erste UNIX-Texteditor).
- So können Sie mehrere Dateien bearbeiten oder gängige Bearbeitungsvorgänge durchführen, ohne jemals vi oder emacs öffnen zu müssen.
- sed liest aus einer Datei oder von der Standardeingabe und gibt auf der Standardausgabe aus.
- sed hat zwei Puffer, die Musterpuffer und Haltepuffer genannt werden.
- Beide sind anfangs leer.
So funktioniert's
- Geben Sie den Musterpuffer auf stdout aus.
- Der Stream-Editor ist kein herkömmlicher Editor wie Vi oder Emacs.
- Sed arbeitet nicht interaktiv, sondern wird über Kommandozeilenoptionen oder ein Skript gesteuert.
- Sed verändert nicht das Original, sondern schreibt das Ergebnis auf die Standardausgabe.
- Sed lädt die aktuell betrachtete Zeile in einen temporären Puffer - im Folgenden als Arbeitspuffer bezeichnet.
Unix Sed Arbeitsmethodik
Dies wird als ein Ausführungszyklus bezeichnet.
- Der Zyklus wird fortgesetzt, bis das Ende der Datei/Eingabe erreicht ist # Lesen einer ganzen Zeile aus stdin/file.
- Entfernt alle nachstehenden Zeilenumbrüche.
- Legt die Zeile in seinen Musterpuffer.
- Ändert den Musterpuffer entsprechend den übergebenen Befehlen.
Installation
Syntax
Optionen
Parameter
Umgebungsvariablen
Exit-Status
Anwendungen
Fehlerbehebung
Konfiguration
Dateien
Sicherheit
Siehe auch
Unterseiten
- Sed
- Sed/Adressierung
- Sed/Anweisungen
- Sed/Aufruf
- Sed/Ausgabe
- Sed/Befehle
- Sed/Beispieltext
- Sed/Dateien direkt bearbeiten
- Sed/Dateien ergänzen
- Sed/Dateiübergabe
- Sed/Einfügen
- Sed/Einfügen aus einer Datei
- Sed/Kommandos
- Sed/Mehrere Kommandos
- Sed/Nächste Zeile beabeiten
- Sed/Regular Expressions
- Sed/Schreiben in eine Datei
- Sed/Sed-Skripte
- Sed/Sed vorzeitig beenden
- Sed/Substitutionen
- Sed/Suchen und Ersetzen
- Sed/Zeichen tauschen
- Sed/Zeilen ausgeben
- Sed/Zeilen löschen
- Sed/Zeilentausch
Dokumentation
RFC
Man-Pages
Info-Pages
Links
Einzelnachweise
Projekt
Weblinks
Testfragen
Testfrage 1
Antwort1
Testfrage 2
Antwort2
Testfrage 3
Antwort3
Testfrage 4
Antwort4
Testfrage 5
Antwort5
TMP
Aufruf
Dateiübergabe
Ausgabe
Kommandoübersicht
Substitutionen
Reguläre Ausdrücke
Beispieltexte
Anweisungen
Zeilen ausgeben
Adressierung
Zeilen löschen
Suchen und Ersetzen
Mehrere Kommandos [-e]
Einfügen [i|a]
Einfügen aus einer Datei [r]
Schreiben in eine Datei [w]
Dateien direkt bearbeiten
Dateien ergänzen
Nächste Zeile beabeiten[n]
Zeichen tauschen [y]
Sed vorzeitig beenden [q]
Manchmal ist es sinnvoll, den Stream Editor vorzeitig zu beenden:
sed '3q' test.txt 1 Der Aufruf des Stream Editors besitzt immer das Format: 2 3 sed 'Kommando' Dateiname
sed -n '/sed/{p;q;}' test.txt 3 sed 'Kommando' Dateiname
Zeilentausch [h|g|G|x ]
- Die aktuell bearbeitete Zeile hält der Sed in einem Zwischenspeicher und bearbeitet sie in diesem »Pattern Space«.
- Hat der Editor seine Arbeit beendet, gibt er die Zeile aus und lädt die folgende Zeile der Eingabedatei in den Zwischenspeicher.
h | Mit dem Kommando »h« kann der aktuelle Zwischenspeicher in einen Puffer gesichert werden (»holding buffer«). |
---|---|
G | Das Kommando »G« fügt den Inhalt dieses Sicherungspuffers hinter der aktuell bearbeiteten Zeile ein. |
g | »g« ersetzt die aktuelle Zeile durch den Inhalt des Sicherungspuffers. |
x | Den Inhalt der beiden Puffer vertauscht das Kommando »x«. |
Beispiel 1
sed -e '/sed/{h;d;}' -e '4G' -e '4q' test.txt 1 Der Aufruf des Stream Editors besitzt immer das Format: 2 4 3 sed 'Kommando' Dateiname sed -e '/sed/{h;d;}' -e '4g' -e '5q' test.txt 1 Der Aufruf des Stream Editors besitzt immer das Format: 2 3 sed 'Kommando' Dateiname 5 Dabei kann dem Kommando mitgeteilt werden, welche Zeilen der
Erklärung
- Das erste Kommando »-e '/sed/{h;d;}'« in teilt dem Editor mit, die Zeile, die sed enthält, zuerst in den Zwischenspeicher zu sichern und nachfolgend zu löschen.
- Das zweite Kommando vollzieht das Einfügen des Inhalts des Puffers. »-e '4G'« fügt nach der 4.Zeile ein (Achtung: die gelöschte Zeile wird mitgezählt!)»-e '4g'« ersetzt die 4.Zeile.
- Das letzte Kommando »-e '4q'« beendet die Arbeit des Editors nach der 4.
- Zeile.
Beispiel 2
sed -e '/Aufruf/h' -e '/Angabe/x' -e '$G' test.txt 1 Der Aufruf des Stream Editors besitzt immer das Format: 2 3 sed 'Kommando' Dateiname 4 5 Dabei kann dem Kommando mitgeteilt werden, welche Zeilen der 6 Eingabedatei es bearbeiten soll.
- Als Adressierung kommen folgende
7 Mechanismen in Frage: 8 1 Der Aufruf des Stream Editors besitzt immer das Format: 10 Nummer Genau diese Zeile 11 Start, Ende Alle Zeilen von "Start" bis "Ende" 12 $ Symbolisiert die letzte Zeile 13 RegEx Zeilen, die den Regulären Ausdruck enthalten 14 1, RegEx Von Zeile 1 bis zur ersten Zeile, die RegEx enthält 9 Keine Angabe Alle Zeilen
Erklärung
- Enthält eine Zeile das Muster »Aufruf«, wird sie im Zwischenpuffer abgelegt.
- Steht in einer Zeile »Angabe«, so wird diese Zeile mit dem Inhalt des Zwischenpuffers vertauscht.
- Der Inhalt des Zwischenpuffers wird hinter der letzten Zeile eingefügt.
Sed-Skripte