【发布时间】:2015-12-22 11:39:16
【问题描述】:
我想使用 Grep 在 Windows 应用程序事件日志中搜索字符串。 以下是日志摘录:
I 05-Nov-14 10:08:04 51033 AP_AN <I>1 images out of 1 are transferred to ABS_Dynamics for the job(297.0.0) at the rate of 0.09 images / sec. </I>
Time: 5.11.2014, 10:08:04, Line: 1068, File: \EdCom\src\ArcNet\ArcNet_server\src\ANBeServer/ANBeNetworkNodeJob_haz.cpp, Process: CGenericMain (7804)
W 05-Nov-14 10:08:53 14 AXY_ISC State Manager has detected a hung process.
Time: 5.11.2014, 10:08:53, Process: C:\AIOM\Service\bin\Rep.exe_1976,
Text: (05.11.2014 10:08:53) IV SET: CProcess::DeclareHung(AppUI_A,6228) Process appears to be hung. (null
W 05-Nov-14 10:08:53 17 AXY_ISC An error was detected in a process that is monitored by State Manager.
Time: 5.11.2014, 10:08:53, Process: C:\AIOM\Service\bin\Rep.exe_1976,
Text: (05.11.2014 10:08:53) IVS SET: CMonitorThread::ProcessFailing(PID:6228 TID:4264) Process AppUI_A is
我想在事件日志中搜索一个字符串“CProcess::DeclareHung”,搜索输出应该如下:
W 05-Nov-14 10:08:53 14 AXY_ISC State Manager has detected a hung process.
Time: 5.11.2014, 10:08:53, Process: C:\AIOM\Service\bin\Rep.exe_1976,
Text: (05.11.2014 10:08:53) IV SET: CProcess::DeclareHung(AppUI_A,6228) Process appears to be hung. (null
即。包括搜索字符串的日志和摘要行。
每行由换行符分隔,此日志文件为 .txt 文件。 我知道 grep 是一个基于行的搜索应用程序,但是,我读过使用珍珠正则表达式,我们可以使 grep 搜索多行。我是珍珠正则表达式的新手,完全不知道如何做到这一点。
谁能帮我用 grep 搜索这个?
编辑:我尝试了以下方法,但没有成功
grep -P "[W|E|I] \d\d-\w\w\w-\d\d.*[\s]*.*CProcess::DeclareHung.*[\s]*.*" XA2014_11_04_AppEventLog.txt
【问题讨论】:
-
什么定义了摘要行?它是否总是在开头包含一个字母?
-
@fedorqui: 以 W 或 I 或 E 开头的行将是日志行,后跟 0 或多个摘要行。所有日志和摘要行都由换行符分隔。日志行的开头总是包含单个字母