[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Leerzeilen am Textende



Jens Kubieziel schrieb:
On Sun, May 02, 2004 at 01:01:54PM +0200, Bjoern Schmidt wrote:

Roland M. Kruggel schrieb:

ich habe eine Textdatei an deren Ende eine undefinierte Anzahl
von Leerzeilen ist. Ich möchte diese Leerzeilen alle löschen.

Lustig dieser Thread ;)
Versuchs mal damit:

sed ':a;/^\n*$/{$d;N;ba;}'

        |    |    |  |  |
	|    |    |  |  |_ springe zum Label a
	|    |    |  |_ nächste Zeile an den Speicher hängen
	|    |    |_ letzte Zeile löschen
	|    |_ Zeile, die am Beginn einen Zeilenumbruch enthält, finden
	|_ Label a anlegen

Wenn ich das richtig verstehe, werden die letzten leeren Zeilen auf eine
zusammen gefasst (Also der Form:
"\n\n\n")
und diese Zeile wird gelöscht.


Genau Richtig. Der Alg. liest eine Zeile in den Pattern Space. Ist
diese Zeile nicht leer '/^\n*$' ( steht für leer ), wird der Inhalt vom
PS ausgegeben und die nächste Zeile bearbeitet. Ist die Zeile aber leer
wird sie gelöscht '$d', falls es die letzte Zeile der Datei ist. Ist es
nicht die letzte Zeile der Datei, wird die nächste Zeile in dem PS an
die zuvor gelesene Zeile angehängt 'N' und ein branch nach a 'ba;' bzw.
'b a;' ausgeführt. Wenn jetzt eine nicht leere Zeile gelesen wird, so
wird der Inhalt des PS ausgegeben und sed fährt wie oben gesagt mit der
nächsten Zeile fort.

--
Mit freundlichen Gruessen
Bjoern Schmidt




Reply to: