考虑一个包含数据的大日志文件;目标是捕获包含(TRxxxx)
的所有行,其中x可以是0000到9999之间的任何值,并且还捕获包含“ error
”的所有行。
我必须使用cmd进行此操作,因此我尝试应用findstr
。
我遇到的一个问题是,有时会有成功的运行说明(TRxxxx),例如:“ (TR1234) Power '60 KB' has been deployed to version '9'
”。我不想要这些,只有那些失败的。
我考虑过使用正则表达式来匹配包含“ (TRxxxx)
”或“ error
”而不是“ (TRxxxx) the deployment has been successful
”的所有内容。
我尝试使用以下方法执行此操作:findstr /R "^((?!has been deployed).*$)|.*error.*|\(TR[0-9]{4}.*\)" test.log
,但它仍然捕获了“已部署”,并且我认为总体而言这是一团糟。
测试输入以使其更易于使用:
(TR3919) Power '1' has been deployed to version '1' <-- no match
(TR9102) Power '2' has NOT been deployed to version '2' <-- match
Random text and l3773r5, with a big error... <-- match
(TR1337) complicated <-- match
(TR1239) error <-- match