如何在中间删除这些行?

时间:2017-09-25 15:23:34

标签: regex jvm jstack

我从服务器转储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]

有没有人知道如何使用正则表达式执行此操作?因为价值是动态的。请建议

1 个答案:

答案 0 :(得分:1)

好像你做了一个线程转储。

您可以尝试使用此awk one-liner来修改转储文件:

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

顺便说一句,这不是一个java问题,尽管您的输入文件是由jstack创建的。