Sed/Zeilentausch: Unterschied zwischen den Versionen
Erscheinungsbild
K Textersetzung - „»“ durch „''“ |
K Textersetzung - „ “ durch „ “ |
||
| Zeile 21: | Zeile 21: | ||
==== Beispiel 1 ==== | ==== Beispiel 1 ==== | ||
'''sed -e '/sed/{h;d;}' -e '4G' -e '4q' test.txt''' | '''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''' | '''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 ===== | ===== Erklärung ===== | ||
| Zeile 39: | Zeile 39: | ||
==== Beispiel 2 ==== | ==== Beispiel 2 ==== | ||
'''sed -e '/Aufruf/h' -e '/Angabe/x' -e '$G' test.txt''' | '''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 | * 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 ===== | ===== Erklärung ===== | ||
Aktuelle Version vom 14. Juni 2026, 00:50 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.