
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