Zum Inhalt springen

Sed/Zeilentausch: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „== 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. {|class="wikitable" |- ! align=center | h ! | Mit dem Kommando »h« kann der aktuelle Zwischenspeicher in einen Puffer gesichert werden (»holding buffer«). |- | align=ce…“
 
K Textersetzung - „ “ durch „ “
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
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 »Pattern Space«.  
* 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 »h« kann der aktuelle Zwischenspeicher in einen Puffer gesichert werden (»holding buffer«).  
! | Mit dem Kommando ''h'' kann der aktuelle Zwischenspeicher in einen Puffer gesichert werden (''holding buffer'').  
|-
|-
| align=center | '''G'''
| align=center | '''G'''
| | Das Kommando »G« fügt den Inhalt dieses Sicherungspuffers '''hinter '''der aktuell bearbeiteten Zeile ein.
| | 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.  
| | ''g'' '''ersetzt '''die aktuelle Zeile durch den Inhalt des Sicherungspuffers.  
|-
|-
| align=center | '''x'''
| align=center | '''x'''
| | Den Inhalt der beiden Puffer '''vertauscht '''das Kommando »x«.  
| | Den Inhalt der beiden Puffer '''vertauscht '''das Kommando ''x''.  
|-
|-
|}
|}
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:
1 Der Aufruf des Stream Editors besitzt immer das Format:
  2  
2  
  4  
4  
  3 sed 'Kommando' Dateiname
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:
1 Der Aufruf des Stream Editors besitzt immer das Format:
  2  
2  
  3 sed 'Kommando' Dateiname
3 sed 'Kommando' Dateiname
  5 Dabei kann dem Kommando mitgeteilt werden, welche Zeilen der
5 Dabei kann dem Kommando mitgeteilt werden, welche Zeilen der


===== Erklärung =====
===== 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 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 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.  
* Das letzte Kommando ''-e '4q''' beendet die Arbeit des Editors nach der 4.  
* Zeile.  
* Zeile.  


==== 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:
1 Der Aufruf des Stream Editors besitzt immer das Format:
  2  
2  
  3 sed 'Kommando' Dateiname
3 sed 'Kommando' Dateiname
  4  
4  
  5 Dabei kann dem Kommando mitgeteilt werden, welche Zeilen der
5 Dabei kann dem Kommando mitgeteilt werden, welche Zeilen der
  6 Eingabedatei es bearbeiten soll.  
6 Eingabedatei es bearbeiten soll.  
* Als Adressierung kommen folgende
* Als Adressierung kommen folgende
  7 Mechanismen in Frage:
7 Mechanismen in Frage:
  8  
8  
  1 Der Aufruf des Stream Editors besitzt immer das Format:
1 Der Aufruf des Stream Editors besitzt immer das Format:
  10 Nummer Genau diese Zeile
10 Nummer Genau diese Zeile
  11 Start, Ende Alle Zeilen von "Start" bis "Ende"
11 Start, Ende Alle Zeilen von "Start" bis "Ende"
  12 $ Symbolisiert die letzte Zeile
12 $ Symbolisiert die letzte Zeile
  13 RegEx Zeilen, die den Regulären Ausdruck enthalten
13 RegEx Zeilen, die den Regulären Ausdruck enthalten
  14 1, RegEx Von Zeile 1 bis zur ersten Zeile, die RegEx enthält
14 1, RegEx Von Zeile 1 bis zur ersten Zeile, die RegEx enthält
  9 Keine Angabe Alle Zeilen
9 Keine Angabe Alle Zeilen


===== Erklärung =====
===== Erklärung =====
* Enthält eine Zeile das Muster »Aufruf«, wird sie im Zwischenpuffer abgelegt.  
* 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.  
* 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 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.