ich einige Log-Ausgänge haben, die wie folgt aussieht:Regex Prune Logausgabe
<DEBUG> 01-Jan-1970::01:01:01.012 JavaClassName Lala-Worker-Thread-0: - This line contains information
<DEBUG> 01-Jan-1970::01:01:01.012 JavaClassName Lala-Worker-Thread-0: - Result received: '[email protected]'
würde Ich mag diese Ausgabe beschneiden
<DEBUG> - This line contains information
<DEBUG> - Result received: '[email protected]'
ich etwas gefunden habe, die Art aber funktioniert manchmal tut Dinge, die ich nicht will, so möchte ich „Qualitätsnachweis“ es ein bisschen:
$ sed -r 's/(<[A-Z]+>)(.*:)/\1/g' theLogFile
<DEBUG> - This line contains information
<DEBUG> '[email protected]'
Wer weiß, was sonst meine regex ist in der Lage (in einer ba d Weg), also, was ist eine bessere Lösung? Das funktioniert besser, aber scheint Art von dumm, in einer Art und Weise den Strich in einer Gruppe angeben, dass „es entfernt“, und dann manuell hinzufügen zurück:
sed -r 's/(<[A-Z]+>)(.*: -)(.*)/\1 - \3/g'
Wie auch immer, Beratung, anyone? Vielen Dank.
ich wahrscheinlich etwas tun würde, wie 'perl -pe‚s/^ <[A-Z]+> \ K \ S + \ S + \ S +: // ''. – melpomene
Sie müssen möglicherweise eine klarere Vorstellung davon haben, was Ihr Muster ist. Aus dem begrenzten Beispiel von Ihnen würde ich erraten, dass alle Debug-Zeilen die Informationen enthalten, die Sie nach dem ": -" wollen. Wenn ja, eine einfache '' 'Katze theLogFile | sed 's /.*: - // g'''' würde den Job machen. – MASL
@MASL: Sie sollten die Angewohnheit zu pipe 'cat' zu sed/grep/awk/... verlieren alle diese Befehle haben einen" filename "-Parameter. –