正则表达式修剪日志输出

时间:2017-12-10 14:43:56

标签: regex logging sed

我有一些看起来像这样的日志输出:

<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: 'com.lala.lulu.SomeClass@13579ace'

我想将此输出修剪为

<DEBUG> - This line contains information
<DEBUG> - Result received: 'com.lala.lulu.SomeClass@13579ace'

我发现了一些有用的东西,但有时会做一些我不想要的东西,所以我想要&#34;质量证明&#34;它有点:

$ sed -r 's/(<[A-Z]+>)(.*:)/\1/g' theLogFile
<DEBUG> - This line contains information
<DEBUG> 'com.lala.lulu.SomeClass@13579ace'

谁知道我的正则表达式还有什么能力(以一种糟糕的方式),那么什么是更好的解决方案?这样做效果更好,但看起来有点愚蠢,在一个组中指定短划线,然后将其删除&#34;,然后手动将其添加回来:

sed -r 's/(<[A-Z]+>)(.*: - )(.*)/\1 - \3/g'

无论如何,建议,任何人?谢谢。

2 个答案:

答案 0 :(得分:2)

简单 sed 方法:

sed -E 's/^(<[A-Z]+>).*:( - .*)/\1\2/' logfile

输出:

<DEBUG> - This line contains information
<DEBUG> - Result received: 'com.lala.lulu.SomeClass@13579ace'

答案 1 :(得分:0)

$ sed -E 's/ ([^:]*:){5}//' file
<DEBUG> - This line contains information
<DEBUG> - Result received: 'com.lala.lulu.SomeClass@13579ace'