sed ueber mehrere Zeilen

06/06/2009 - 18:41 von Thomas Steinbach | Report spam
Hallo,

ich wuerde gerne mit sed alle _ersten_ leeren Zeilen (Dateianfang)
und dann immer nur bei zwei oder mehr aufeinanderfolgenden
Leerzeilen, bis auf eben eine Leerzeile, diese "ueberfluessigen"
Leerzeilen loeschen. Am Ende soll dann auch eine (aber mindesten
eine) Leerzeile sein.Wie kann man sowas umsetzen?

Thomas
 

Lesen sie die antworten

#1 Marcel Bruinsma
07/06/2009 - 04:39 | Warnen spam
Thomas Steinbach wrote:

ich wuerde gerne mit sed alle _ersten_ leeren Zeilen (Dateianfang)
und dann immer nur bei zwei oder mehr aufeinanderfolgenden
Leerzeilen, bis auf eben eine Leerzeile, diese "ueberfluessigen"
Leerzeilen loeschen. Am Ende soll dann auch eine (aber mindesten
eine) Leerzeile sein.Wie kann man sowas umsetzen?



tr <datei '' '\001' | sed -e '
# Leerzeilen am Anfang löschen
s,^\x01\x01*,,
# zwei oder mehr? => 1
s,\x01\x01\x01*,\x01,g
# eine Lz am Ende
s,\([^\x01]\)$,\1\x01,
' | tr '\001' ''

GNU sed versteht \x01, sonst in vi:
:%s/\\x01/<CTRL-V><CTRL-A>/g<ENTER>

printf -v email $(echo \ 155 141 162 143 145 154 155 141 162 \
143 145 154 100 157 162 141 156 147 145 56 156 154 | tr \ \\)
# O Herr, lass Hirn vom Himmel fallen! #

Ähnliche fragen