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 _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
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 ?
Es rausziehen? findErr=re.compile('^.*(?:ERROR|CRIT|ALERT|EMERG).*$' ,re.M) Oder zeilenweise arbeiten, wie es grep auch tut - dann reicht ein simples match, und abhängig davon packst du die Zeile in das Ergebnis. Diez _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (2)
-
Diez B. Roggisch
-
Steffen Oschatz