Hallo, Am Mon, 08 Feb 2010, Lentes, Bernd schrieb:
David Haller schrieb:
Am Mon, 08 Feb 2010, Lentes, Bernd schrieb:
1. grep [^#] bedeutet _nicht_, "zeige alle Zeilen, die kein # enthalten", _sondern_ "zeige alle Zeilen, die ein anderes Zeichen als # enthalten" ?
Ja.
2. "[^#] findet also alle Zeilen, die entweder mit irgendwas beginnen "^" (daher auch nicht die leeren Zeilen) oder nen "#" enthalten."
Nein.
Stimmt insofern nicht, als daß das ^ hier nichts mit dem Zeilenanfang zu tun hat.
Genau. Negation der Zeichenklasse.
Danke für die klare Antwort.
Lt. den Gurus sollte man übrigens '!' statt '^' dafür verwenden. Also z.B. '[!a-z]' statt '[^a-z]'.
Tatsächlich äquivalent sind:
grep -v '^#' Datei ### zeige keine Zeilen die mit # beginnen und grep '^[^#]' Datei ### zeige alle Zeilen, die nicht mit # beginnen
Tut mir leid, Dich enttäuschen zu müssen:
pc53082:~ # grep -v '^#' greptest
111 1111 11 # ein Kommentar hinten dran
Tut wie spezifiziert.
pc53082:~ #
pc53082:~ # grep '^[^#]' greptest 111 1111 11 # ein Kommentar hinten dran pc53082:~ #
Tut wie spezifiziert. Nur mein Kommentar war faschl. Korrekt: ### zeige alle Zeilen, die nicht mit # beginnen und mind. 1 ### Zeichen != '#' am Anfang enthalten. bzw. $ grep '^[^#]\|^$' greptest Für den Sonderfall der leeren Zeilen, war ich wohl einfach schon zu müde. BTW: ich hoffe, du machst solche Experimente nicht als root ...
"grep -v '^#'" zeigt alle Zeilen an, die nicht mit # anfangen. Eine Leerzeile fängt nicht mit # an. "grep '^[^#]'" zeigt alle Zeilen an, die mit einem anderen Zeichen als # anfangen. Eine Leerzeile fängt nicht mit einem anderen Zeichen als # an, sondern mit überhaupt keinem Zeichen.
Und wenn das jetzt so nicht stimmt, habe ich in den letzten Stunden gar nichts gelernt und bin todtraurig. Schnief.
Doch hast du. Stimmt so. Macht den Eindruck, daß du was entscheidendes bzgl. Regex gelernt hast ;) Ansonsten siehe meine Antwort "oben" im Thread in der auch die sed-Variante steht. -dnh -- A monk. A punk. A chick. In a kick-ass flick. -- Bulletproof Monk -- 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