Hallo, Am Don, 09 Sep 2010, Andre Tann schrieb:
ich komm grad nicht drauf, warum folgendes nicht funktioniert:
grep text.*[^(ausschluss)]
Es sollen alle Zeilen gefunden werden, die "text" enthalten, es sei denn, es taucht irgendwo danach "ausschluss" auf.
() haben in BREs generell keine Sonderbedeutung (siehe man 7 regex). Wenn, dann m-Aüßtest du '[^\(ausschluss\)]' verwenden.-b Und du hast den generellen Denkfehler, da-Aß schon das .* immer bis zum-b Zeilenende "passt". Also auch wenn dein [^()] so verarbeitet werden w-Aürde, wie du willst, würde schon das .* bis zum Zeilenende passen,-b und auf die leere RE am Zeilenende passt dein [^()] ebenfalls. Deswegen hilft auch weder ein pcregrep 'text.*(?!ausschluss)' noch pcregrep 'text.*?(?!ausschluss)' denn auch da passt das (?!) auf's Zeilenende. Dein Problem ist also mehr das .* als das ausschliessen. Siehe 'man 7 regex' und 'man perlre'. Mach folgendes: grep text | grep -v 'ausschluss' oder wenn's darauf ankommt, da-Aß 'ausschluss' nur nach 'text' wegsoll-b (aber vor 'text' auftreten darf): grep text | grep -v 'text.*ausschluss' Oder du kannst noch genauer spezifizieren, ob, und wenn ja was, nach 'ausschluss' noch folgen kann/darf. Mit PCREs sollte sich evtl. was basteln lassen, aber dazu bin ich jetzt zu m-Aüde ("Nachtschicht" ;)-b HTH, -dnh -- Disclaimer - These opiini^H^H damn! ^H^H ^Q ^[ .. :w :q :wq :wq! ^d X^? exit X Q ^C ^c ^? :quitbye CtrlAltDel ~~q :~q logout save/quit :!QUIT ^[zz ^[ZZZZZZ ^H man vi ^@ ^L ^[c ^# ^E ^X ^I ^T ? help helpquit ^D ^d man help ^C exit ?Quit ?q CtrlShftDel "Hey, what does this button d..." -- 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