Consider a large log file containing data; the goal is to capture all rows containing either (TRxxxx)
, where the x's can be anything from 0000 to 9999, and also capture all rows containing "error
".
I have to do this using the cmd, so I have tried to apply findstr
.
One issue I have run into is that sometimes there are successful runs stating (TRxxxx), such as: "(TR1234) Power '60 KB' has been deployed to version '9'
". I do not want these, only the ones that have failed.
I considered using regex to match everything containing "(TRxxxx)
" or "error
", but not "(TRxxxx) the deployment has been successful
".
I tried to do this using the following: findstr /R "^((?!has been deployed).*$)|.*error.*|\(TR[0-9]{4}.*\)" test.log
but it still captures "has been deployed", and I think overall it's a broken mess.
Test input to make it easier to work with:
(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