我有一些看起来像这样的日志输出:
<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'
无论如何,建议,任何人?谢谢。
答案 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'