Heim >System-Tutorial >LINUX >Umfassende Zusammenfassung: Detaillierte Erläuterung der mehrzeiligen sed-Verarbeitung unter Linux

Umfassende Zusammenfassung: Detaillierte Erläuterung der mehrzeiligen sed-Verarbeitung unter Linux

WBOY
WBOYnach vorne
2024-01-05 16:11:491127Durchsuche

Unter normalen Umständen liest sed die zu verarbeitende Zeile in den Musterbereich, und die Befehle im Skript verarbeiten die Zeile nacheinander, bis das Skript ausgeführt wird. Anschließend wird die Zeile ausgegeben und der Musterbereich ist leer Mit der Aktion soeben wird eine neue Zeile in die Datei eingelesen, bis die Datei vollständig verarbeitet ist. Allerdings können verschiedene Gründe, wie z. B. die Hoffnung des Benutzers, dass ein bestimmter Befehl im Skript unter bestimmten Bedingungen ausgeführt wird, oder die Hoffnung, dass der Musterraum für die nächste Verarbeitung erhalten bleibt, dazu führen, dass sed bei der Verarbeitung von Dateien nicht den Anweisungen folgt den normalen Vorgang aus. Zu diesem Zeitpunkt hat sed einige erweiterte Befehle eingerichtet, um den Benutzeranforderungen gerecht zu werden. Wenn Sie die erweiterten Befehle von sed erlernen möchten, müssen Sie zunächst die folgenden beiden Cache-Bereiche verstehen:

1. Definition des Musterraums: Der Musterraum ist ein Pufferbereich, der speichert, was sed gerade vom Eingabeende gelesen hat.
2. Definition des Haltebereichs: Der Haltebereich wird zum vorübergehenden Zwischenspeichern von Daten bei der Verarbeitung von Musterbereichsdaten verwendet.

Es gibt auch mehrere Befehlsparameter:

g: Kopieren Sie den Inhalt im Haltebereich in den Musterbereich und löschen Sie den ursprünglichen Inhalt im Musterbereich
G: Hängen Sie den Inhalt im Haltebereich an den Musterbereich an
h: Kopieren Sie den Inhalt im Musterbereich in den Haltebereich und der Inhalt im ursprünglichen Haltebereich wird gelöscht
H: Hängen Sie den Inhalt im Musterbereich an den Haltebereich an
x: Tauschen Sie den Inhalt von Musterraum und Halteraum aus

Zum Beispiel möchten wir den Inhalt einer Datei umkehren:

[qiu.li@l-tdata1.tkt.cn6 ~]$ cat tmp 
1-line
2-line
3-line

Führen Sie den folgenden Befehl aus:

[qiu.li@l-tdata1.tkt.cn6 ~]$ sed '2,$G;h;$!d' tmp
3-line
2-line
1-line

Lassen Sie uns den oben genannten Ausführungsprozess nach und nach verstehen

1. Lassen Sie uns die folgenden drei Befehle analysieren:

  • 2,$G: G-Befehl von der zweiten bis zur letzten Zeile ausführen
  • h: h-Befehl ausführen
  • $!d: Alle Zeilen außer der letzten Zeile löschen

2. Spezifische Operationen

  1. Scannen Sie bis zur ersten Zeile
    1. Fügen Sie 1 Zeile in den Musterbereich ein. Der Musterbereich ist zu diesem Zeitpunkt immer noch 1 Zeile.
    2. Führen Sie den h-Befehl direkt aus, der temporäre Speicherplatz ist zu diesem Zeitpunkt 1-zeilig
    3. Führen Sie den Befehl d aus, um die einzige Datenzeile im Musterbereich zu löschen. Nach dem Löschen ist der Musterbereich leer
  2. Scannen Sie bis zur zweiten Zeile
    1. Fügen Sie 2 Zeilen in den Musterbereich ein
    2. Führen Sie den Befehl G aus, um die 1-Zeilen-Zeilen des Musterbereichs hinter die 2-Zeilen-Zeilen des Musterbereichs hinzuzufügen
    3. Führen Sie den Befehl h aus, der Inhalt des temporären Speicherplatzes ist 2-zeilig1-zeilig
    4. Führen Sie den d-Befehl aus und der Musterbereich wird gelöscht
    Scannen Sie bis zur dritten Zeile
  3. Fügen Sie eine 3-Linie in den Musterbereich ein,
    1. Führen Sie den G-Befehl aus, um 2-linen1-line im temporären Bereich hinter 3-line im Musterbereich hinzuzufügen. Zu diesem Zeitpunkt ist der Musterbereich 3-linen2-linen1-line;
    2. Führen Sie den Befehl h aus, der Inhalt des temporären Speicherplatzes ist 3-Leinen2-Leinen1-Zeile
    3. Führen Sie $!d;
    4. nicht aus
    Direkte Ausgabe 3-Leinen2-Leinen1-Leinen
  4. Natürlich kann auch der Befehl: sed '1!G;h;$!d' tmp diesen Effekt haben.

Das obige ist der detaillierte Inhalt vonUmfassende Zusammenfassung: Detaillierte Erläuterung der mehrzeiligen sed-Verarbeitung unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen