2017-09-25 97 views
-4

我从服务器转储JVM线程。从转储中,我想使用正则表达式来删除一些行。如何删除中间的这条线?

at java.lang.Thread.run(Thread.java:722) 

    Locked ownable synchronizers: 
    - <0x00000005b8052b20> (a java.util.concurrent.ThreadPoolExecutor$Worker) 

"catalina-exec-126" daemon prio=10 tid=0x00007f7b58ac5800 nid=0x4171 runnable [0x00007f7ac4800000] 

我想要的输出是这样

at java.lang.Thread.run(Thread.java:722) 

"catalina-exec-126" daemon prio=10 tid=0x00007f7b58ac5800 nid=0x4171 runnable [0x00007f7ac4800000] 

有没有人有一个想法如何做到这一点使用正则表达式?因为这个值是动态的。请建议

+0

那么,对于初学者,你有什么尝试?另外,什么是静态内容?什么是动态的? – ctwheels

回答

1

看来你做了一个线程转储。

你可以试试这个AWK的一行来修改你的转储文件:

awk -v RS="\n\n" -v ORS="\n\n" '!/Locked ownable synchro/' yourDump > newDump 

顺便说一句,这不是一个java的问题,虽然你的输入文件是由jstack创建。

+0

谢谢。我认为这是一个优雅的解决方案 – snso

相关问题