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