Sed: Unterschied zwischen den Versionen

Aus Foxwiki
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.
  1. Entfernt alle nachstehenden Zeilenumbrüche.
  2. Legt die Zeile in seinen Musterpuffer.
  3. Ändert den Musterpuffer entsprechend den übergebenen Befehlen.

Installation

Syntax

Optionen

Parameter

Umgebungsvariablen

Exit-Status

Anwendungen

Fehlerbehebung

Konfiguration

Dateien

Sicherheit

Siehe auch

Unterseiten

Dokumentation

  1. https://www.gnu.org/software/sed/manual/sed.html

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

Sed/Aufruf

Dateiübergabe

Sed/Dateiübergabe

Ausgabe

Sed/Ausgabe

Kommandoübersicht

Sed/Kommandos

Substitutionen

Sed/Substitutionen

Reguläre Ausdrücke

Sed/Regular Expressions

Beispieltexte

Sed/Beispieltext

Anweisungen

Sed/Anweisungen

Zeilen ausgeben

Sed/Zeilen ausgeben

Adressierung

Sed/Adressierung

Zeilen löschen

Sed/Zeilen löschen

Suchen und Ersetzen

Sed/Suchen und Ersetzen

Mehrere Kommandos [-e]

Sed/Mehrere Kommandos

Einfügen [i|a]

Sed/Einfügen

Einfügen aus einer Datei [r]

Sed/Einfügen aus einer Datei

Schreiben in eine Datei [w]

Sed/Schreiben in eine Datei

Dateien direkt bearbeiten

Sed/Dateien direkt bearbeiten

Dateien ergänzen

Sed/Dateien ergänzen

Nächste Zeile beabeiten[n]

Sed/Nächste Zeile beabeiten

Zeichen tauschen [y]

Sed/Zeichen tauschen

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

Sed/Sed-Skripte