假设有一个像下面这样的示例日志文件,它是由 Java 程序中的多个线程异步写入的。
使用 grep/sed/awk/perl 之类的工具 - 是否有一种简单的方法可以解析仅与 [ServerThread-4] 行相关的所有信息,以及与该线程相关的任何 XML 数据.
但是我不想要任何 [ServerThread-10](或其他线程)行,或者那些不相关线程的这些行之后可能出现的任何 XML 数据。
我尝试像这样使用 sed 和 awk,但这些都不起作用,大概是因为我的开始和结束标记是一样的:
sed -n "/\[ServerThread-4\]/,/\[ServerThread-4\]/p" file.log > file-sed.log
Run Code Online (Sandbox Code Playgroud)
awk "/\[ServerThread-4\]/{flag=1;next}/\[ServerThread-4\]/{flag=0}flag" file.log > file-awk.log
Run Code Online (Sandbox Code Playgroud)
示例文件:
2020-09-22 18:06:24,333 [ServerThread-10] DEBUG com.company.abc.Time - CALCULATE_DATA,ServerThread-10,Request,7,linecount=2
2020-09-22 18:06:24,334 [ServerThread-10] DEBUG com.company.abc.webservice.wsc - Web service transfer time out set to: 130000 (ms)
2020-09-22 18:06:24,563 [ServerThread-4] DEBUG com.company.abc.function - XYZ Function Handler: class com.company.abc.function.XYZCalcDocHandler
2020-09-22 18:06:24,563 [ServerThread-4] DEBUG com.company.abc.function - num row 1
2020-09-22 18:06:24,563 [ServerThread-4] DEBUG com.company.abc.function - …
Run Code Online (Sandbox Code Playgroud)