[Python-de] grep Logfiles mit re

Steffen Oschatz steffen.oschatz at philips.com
Don Jan 26 13:45:33 CET 2006


Hallo,

ich bin gerade dabei, ein shell Skript in Python zu überführen, bin aber 
nicht so zufrieden mit dem ersetzen eines "grep" Aufrufes.
Hier ist er :

grep "\(ERROR\)\|\(CRIT\)\|\(ALERT\)\|\(EMERG\)" ...

Wie man sieht sollen einfach alle Zeilen mit den Begriffen in 
Großbuchstaben ausgegeben werden.

Der erste Versuch war:

findErr=re.compile('^.*(ERROR)|(CRIT)|(ALERT)|(EMERG).*$' ,re.M)

was natürlich gescheitert ist an dem Gruppen-Handling in re.

Eine funktionierende Lösung ist:

 re.compile('^.*(?:ERROR.*$)|(?:CRIT.*$)' ,re.M)

allerdings ist hier das in die Klammer reingezogene ".*$" sehr unschön - 
kann man das nicht irgendwie besser machen ?

Grüße Steffen