Werner Flamme schrieb:
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 # :-)
Nahezu unentbehrliche Lektüre *seufz* dazu ist <http://www.87871.com/tool/help/Mastering%20Regular%20Expressi ons,%203rd%20Edition/0596528124/toc.html>.
Guck ich mir mal an.
Dann ist das, was Detlef geschrieben hat, nicht richtig ? Zitat: "[^#] findet also alle Zeilen, die entweder mit irgendwas beginnen "^" (daher auch nicht die leeren Zeilen) oder nen "#" enthalten."
Wenn das (wie hier) ^ an erster Stelle einer Zeichenklasse steht, bedeutet es die Negation der Zeichenklasse. Steht es an anderer Stelle der Zeichenklasse, bedeutet es das Zeichen ^. [^#] -> alle Zeichen, die nicht # sind [#^] -> sowohl # als auch ^ dürfen an dieser Stelle vorkommen. Ist keine Stelle angegeben, gilt analog "in dieser Zeile"
^ in einer Zeichenklasse steht nie für den Zeilenanfang, denn der Zeilenanfang ist eine Position und kein Zeichen - und eine Zeichenklasse besteht nun mal aus Zeichen und nicht aus Positionen ;-)
Das findest Du alles bei Mr. Friedl, spätestens nach dem 10. Einschlafen über der Lektüre ;-) Gilt zumindest für die 2. Auflage...
Hallo Werner, Allmählich lichtet sich der Nebel. Kannst Du mir bitte auf folgende Fragen eine eindeutige Antwort geben ? 1. grep [^#] bedeutet _nicht_, "zeige alle Zeilen, die kein # enthalten", _sondern_ "zeige alle Zeilen, die ein anderes Zeichen als # enthalten" ? 2. "[^#] findet also alle Zeilen, die entweder mit irgendwas beginnen "^" (daher auch nicht die leeren Zeilen) oder nen "#" enthalten." Stimmt insofern nicht, als daß das ^ hier nichts mit dem Zeilenanfang zu tun hat. Frustierend, wenn in einem Buch zur LPI-Vorbereitung drin steht (das auch noch 35,-- € kostet), daß "grep -v [#] Datei" und "grep [^#] Datei" das gleiche seien. Ich hatte bei dem Buch von Harald Maaßen schon an zwei anderen Stellen den Eindruck, das da was nicht stimmt. Bernd