Sed: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 145: Zeile 145:


== Zeilentausch [h|g|G|x ] ==
== Zeilentausch [h|g|G|x ] ==
* Die aktuell bearbeitete Zeile hält der Sed in einem Zwischenspeicher und bearbeitet sie in diesem »Pattern Space«.
[[Sed/Zeilentausch]]
* Hat der Editor seine Arbeit beendet, gibt er die Zeile aus und lädt die folgende Zeile der Eingabedatei in den Zwischenspeicher.
 
{|class="wikitable"
|-
! align=center | h
! | Mit dem Kommando »h« kann der aktuelle Zwischenspeicher in einen Puffer gesichert werden (»holding buffer«).
|-
| align=center | '''G'''
| | Das Kommando »G« fügt den Inhalt dieses Sicherungspuffers '''hinter '''der aktuell bearbeiteten Zeile ein.
|-
| align=center | '''g'''
| | »g« '''ersetzt '''die aktuelle Zeile durch den Inhalt des Sicherungspuffers.
|-
| align=center | '''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-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 ]

Sed/Zeilentausch

Sed-Skripte

Sed/Sed-Skripte