findstr,使用正则表达式匹配包含x或z但不包含x的y的行

时间:2019-02-26 13:55:18

标签: regex cmd findstr

考虑一个包含数据的大日志文件;目标是捕获包含(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

0 个答案:

没有答案