Perl - Regulärer Ausdruck
Markus
- perl
0 Norbert Kölln0 Markus
Hallo,
ich habe einen regulären Ausdruck in meinem Programm für die Analyse von Log Files :
(/(^Thread)\s(.*)\s(\d{2}).(\d{2}).(\d{4}) (\d{2}):(\d{2}),(\d{2}) (Start): ([A-Za-z]{1,40}) (AA):(\d{3,5}) (SGNR):(\d{2}) (.*)$/))
$12, also der Wert nach (AA): kann 3 oder 5 stellig sein,
wenn er 5 stellig ist, sollen die letzten 2 Stellen abgeschnitten werden, wenn der Wert 3 stellig ist, soll der Wert so bleiben.
Mit welchem Befehl schneide ich die letzten 2 Stellen ab? Mir fällt absolut nichts ein.
Beispiel aus 98856 soll 988 werden
921 bleibt 921 !
Die Zahlen sind gleichzeitig die Indexplätze der Liste in denen sich Hashes befinden, und so mit für die Ausgabe relevant.
"Grundlagen Perl" steht auch nichts drin ; (, ich hoffe ihr könnt mir weiterhelfen. Ich weiß nicht warum mir so eine Kleinigkeit nicht einfällt.
Moin, moin!
Wie wäre es mit dieser (ungetesteten) Lösung?
(/(^Thread)\s(.*)\s(\d{2}).(\d{2}).(\d{4}) (\d{2}):(\d{2}),(\d{2}) (Start): ([A-Za-z]{1,40}) (AA):(\d{3})\d* (SGNR):(\d{2}) (.*)$/))
Die ersten 3 Ziffern der angesprochenen Zahl stehen dann in $12, weitere (egal wie viele) werden ignoriert.
Alles klar?
Norbert
Moin, moin!
Wie wäre es mit dieser (ungetesteten) Lösung?
(/(^Thread)\s(.*)\s(\d{2}).(\d{2}).(\d{4}) (\d{2}):(\d{2}),(\d{2}) (Start): ([A-Za-z]{1,40}) (AA):(\d{3})\d* (SGNR):(\d{2}) (.*)$/))Die ersten 3 Ziffern der angesprochenen Zahl stehen dann in $12, weitere (egal wie viele) werden ignoriert.
Alles klar?
Norbert
Hmmm danke^*strahl* funktioniert soweit jetzt nur noch an der 40 Millionen Zeilen LogFile probieren LOL, ich meld mich mal in 2 Stunden wieder ; )