Sed/Zeilentausch: Unterschied zwischen den Versionen
Erscheinungsbild
K Textersetzung - „«“ durch „''“ |
K Textersetzung - „»“ durch „''“ |
||
Zeile 1: | Zeile 1: | ||
== 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 | * 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. | * Hat der Editor seine Arbeit beendet, gibt er die Zeile aus und lädt die folgende Zeile der Eingabedatei in den Zwischenspeicher. | ||
Zeile 6: | Zeile 6: | ||
|- | |- | ||
! align=center | h | ! align=center | h | ||
! | Mit dem Kommando | ! | Mit dem Kommando ''h'' kann der aktuelle Zwischenspeicher in einen Puffer gesichert werden (''holding buffer''). | ||
|- | |- | ||
| align=center | '''G''' | | align=center | '''G''' | ||
| | Das Kommando | | | Das Kommando ''G'' fügt den Inhalt dieses Sicherungspuffers '''hinter '''der aktuell bearbeiteten Zeile ein. | ||
|- | |- | ||
| align=center | '''g''' | | align=center | '''g''' | ||
| | | | | ''g'' '''ersetzt '''die aktuelle Zeile durch den Inhalt des Sicherungspuffers. | ||
|- | |- | ||
| align=center | '''x''' | | align=center | '''x''' | ||
| | Den Inhalt der beiden Puffer '''vertauscht '''das Kommando | | | Den Inhalt der beiden Puffer '''vertauscht '''das Kommando ''x''. | ||
|- | |- | ||
|} | |} | ||
Zeile 32: | Zeile 32: | ||
===== Erklärung ===== | ===== Erklärung ===== | ||
* Das erste Kommando | * 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. | * 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 | * Das letzte Kommando ''-e '4q''' beendet die Arbeit des Editors nach der 4. | ||
* Zeile. | * Zeile. | ||
Zeile 57: | Zeile 57: | ||
===== Erklärung ===== | ===== Erklärung ===== | ||
* Enthält eine Zeile das Muster | * Enthält eine Zeile das Muster ''Aufruf'', wird sie im Zwischenpuffer abgelegt. | ||
* Steht in einer Zeile | * 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. | ||
[[Kategorie:Sed]] | [[Kategorie:Sed]] |
Aktuelle Version vom 31. März 2025, 12:20 Uhr
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.