Lentes, Bernd [07.02.2010 21:29]:
Hallo ML,
Ich bin mich momentan auf die LPIC1 am Vorbereiten und stoße bei grep auf ein paar Verständnisprobleme: Ich habe folgende Datei angelegt, man beachte bitte auch die Leerzeilen:
pc53082:~ # cat greptest
# Kommentar 111 1111 # noch nen Kommentar
pc53082:~ #
pc53082:~ # grep [^#] greptest # Kommentar 111 1111 # noch nen Kommentar
Nach meinem Verständnis sollte hier alle Zeilen angezeigt werden, in denen _kein_ # enthalten ist. Wieso werden dann hier die Kommentarzeilen angezeigt ? Liegt das daran, daß man strenggenommen, lt. manpage, in den brackets nur Bereiche angeben darf ?
2. Problem: pc53082:~ # grep -v ^[#] greptest
111 1111
pc53082:~ # grep ^[^#] greptest 111 1111 pc53082:~ # Hier sollten nach meinem Dafürhalten beide Zeilen das gleiche Ergebnis hervorrufen, nämlich alle Zeilen, die _nicht_ mit # anfangen. Einmal werden die Leerzeilen mit angezeigt, einmal nicht. Wieso ? Eine Leerzeile ist auch eine Zeile, die nicht mit # beginnt. Oder gilt, daß eine Leerzeile mit überhaupt keinem Zeichen beginnt ? Laut "LPIC-1" von Harald Maaßen aus dem Galileoverlag sollten beide Kommandos auch die Leerzeilen mit ausgeben. Hmm.
Danke für erhellende Kommentare.
Eine Leerzeile besteht aus keinem Zeichen. Nur die beiden Positionen Zeilenanfang (^) und Zeilenende ($) existieren. [^#] ist eine Zeichenklasse. Sie enthält alle Zeichen außer # (siehe Mail von Ralf Arndt). grep -v ^[#] sucht Zeilen, die nicht mit einem # beginnen. Dazu gehören Leerzeilen. grep ^[^#] sucht Zeilen, die mit einem anderen Zeichen als # beginnen. Eine Leerzeile hat aber kein Zeichen, also beginnt sie auch nicht mit einem anderen Zeichen als # :-) Eine Zeile, die aus einem (oder mehreren) Whitespace besteht, ist in diesem Sinne keine Leerzeile. Nahezu unentbehrliche Lektüre *seufz* dazu ist http://www.87871.com/tool/help/Mastering%20Regular%20Expressions,%203rd%20Ed.... HTH Werner -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org