Stream Editor - Workflow

In diesem Kapitel werden wir untersuchen, wie SED genau funktioniert. Um ein erfahrener SED-Benutzer zu werden, muss man seine Interna kennen. SED folgt einem einfachen Workflow: Lesen, Ausführen und Anzeigen. Das folgende Diagramm zeigt den Workflow.

  • Read: SED liest eine Zeile aus dem Eingabestream (Datei, Pipe oder stdin) und speichert sie in dem aufgerufenen internen Puffer pattern buffer.

  • Execute: Alle SED-Befehle werden nacheinander auf den Musterpuffer angewendet. Standardmäßig werden SED-Befehle auf alle Zeilen (global) angewendet, sofern keine Zeilenadressierung angegeben ist.

  • Display: Senden Sie den (geänderten) Inhalt an den Ausgabestream. Nach dem Senden der Daten ist der Musterpuffer leer.

  • Der obige Vorgang wird wiederholt, bis die Datei erschöpft ist.

Zu beachtende Punkte

  • Der Musterpuffer ist ein privater, speicherinterner, flüchtiger Speicherbereich, der von der SED verwendet wird.

  • Standardmäßig werden alle SED-Befehle auf den Musterpuffer angewendet, daher bleibt die Eingabedatei unverändert. GNU SED bietet eine Möglichkeit, die Eingabedatei direkt zu ändern. Wir werden es in späteren Abschnitten untersuchen.

  • Es gibt einen anderen Speicherbereich namens hold bufferDies ist auch ein privater, speicherinterner, flüchtiger Speicherbereich. Daten können zum späteren Abrufen in einem Haltepuffer gespeichert werden. Am Ende jedes Zyklus entfernt SED den Inhalt des Musterpuffers, aber der Inhalt des Haltepuffers bleibt zwischen den SED-Zyklen bestehen. SED-Befehle können jedoch nicht direkt im Haltepuffer ausgeführt werden, daher ermöglicht SED die Datenbewegung zwischen dem Haltepuffer und dem Musterpuffer.

  • Anfangs sind sowohl Muster- als auch Haltepuffer leer.

  • Wenn keine Eingabedateien bereitgestellt werden, akzeptiert SED Eingaben vom Standardeingabestream (stdin).

  • Wenn der Adressbereich nicht standardmäßig bereitgestellt wird, arbeitet SED auf jeder Leitung.

Beispiele

Lassen Sie uns eine Textdatei erstellen quote.txt ein Zitat des berühmten Autors Paulo Coelho zu enthalten.

[jerry]$ vi quote.txt 
There is only one thing that makes a dream impossible to achieve: the fear of failure. 
 - Paulo Coelho, The Alchemist

Um den Workflow von SED zu verstehen, zeigen wir den Inhalt der Datei quote.txt mit SED an. Dieses Beispiel simuliert diecat Befehl.

[jerry]$ sed '' quote.txt

Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt.

There is only one thing that makes a dream impossible to achieve: the fear of failure.

Im obigen Beispiel ist quote.txt der Name der Eingabedatei. Davor gibt es ein einfaches Anführungszeichen, das den SED-Befehl impliziert. Lassen Sie uns diese Operation entmystifizieren.

Zuerst liest SED eine Zeile aus der Eingabedatei quote.txt und speichert sie in ihrem Musterpuffer. Dann werden SED-Befehle auf den Musterpuffer angewendet. In unserem Fall sind keine SED-Befehle vorhanden, daher wird keine Operation am Musterpuffer ausgeführt. Schließlich wird der Inhalt des Musterpuffers in der Standardausgabe gelöscht und gedruckt. Ist es nicht einfach?

Im folgenden Beispiel akzeptiert SED Eingaben aus dem Standardeingabestream.

[jerry]$ sed '' 
       
      

Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt.

There is only one thing that makes a dream impossible to achieve: the fear of failure. 
There is only one thing that makes a dream impossible to achieve: the fear of failure.

Hier wird die erste Zeile über die Tastatur eingegeben und die zweite ist die von SED erzeugte Ausgabe. Um die SED-Sitzung zu beenden, drücken Sie Strg-D (^ D).