要求: 解析文本文件,需要将特定的行模式提取到另一个文件。在输出文件中,我只需要带有日期后跟ERROR的行。
批处理文件代码:
findstr /r "^\\d{4}-\\d{2}-\\d{2}\\s+\\d{2}:\\d{2}:\\d{2},\\d{3} \<ERROR.*" server.log > "%CD%"/test.txt
pause
输入文件: Sample.log
2017-11-28 00:40:16,791 ERROR [org.jboss.weld.Bean] (ServerService Thread Pool -- 269) WELD-000019: Error destroying an instance
2017-11-28 00:40:16,791 INFO [stdout] (ServerService Thread Pool -- 269) [ERROR][faces context is null in context utils1]
2017-11-28 00:40:16,791 INFO [stdout] (ServerService Thread Pool -- 269) [ERROR][faces context is null in context utils1]
2017-11-28 00:40:16,791 ERROR [org.jboss.weld.Bean] (ServerService Thread Pool -- 269) WELD-000019: Error destroying an instance
2017-11-28 00:40:16,791 INFO [stdout] (ServerService Thread Pool -- 269) [ERROR][faces context is null in context utils1]
2017-11-28 00:40:16,791 INFO [stdout] (ServerService Thread Pool -- 269) [ERROR][faces context is null in context utils1]
预期产出:
2017-11-28 00:40:16,791 ERROR [org.jboss.weld.Bean] (ServerService Thread Pool -- 269) WELD-000019: Error destroying an instance
2017-11-28 00:40:16,791 ERROR [org.jboss.weld.Bean] (ServerService Thread Pool -- 269) WELD-000019: Error destroying an instance
但是目前代码返回输出文件中的所有内容。 试过边界也是如此。
答案 0 :(得分:3)
FINDSTR /b /r "....-..-.....:..:..,....ERROR" "%filename1%
其中filename1
包含您的sourcefilename应该完成任务,因为findstr
限制了正则表达式的实现。