findstr, сопоставление строки, содержащей x или z, но не y в x с регулярным выражением - PullRequest
0 голосов
/ 26 февраля 2019

Рассмотрим большой файл журнала, содержащий данные;цель состоит в том, чтобы захватить все строки, содержащие либо (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
...