Я пытаюсь найти, какие слова произошли в файлах журнала, а также показать имя файла журнала для всего, что соответствует следующему шаблону:
'BA10\|BA20\|BA21\|BA30\|BA31\|BA00'
поэтому, если файл dummylogfile.log содержит BA10002, я хотел бы получить такой результат, как :
dummylogfile.log: BA10002
совершенно нормально, если файл журнала отображается дважды для повторяющихся совпадений.
ближайший, который я получил, это:
for f in $(find . -name '*.err' -exec grep -l 'BA10\|BA20\|BA21\|BA30\|BA31\|BA00' {} \+);do printf $f;printf ':';grep -o 'BA10\|BA20\|BA21\|BA30\|BA31\|BA00' $f;done
, но это дает такие вещи, как:
./register-05-14-11-53-59_24154.err:BA10
BA10
./register_mdw_files_2020-05-14-11-54-32_24429.err:BA10
BA10
./process_tables.2020-05-18-11-18-09_11428.err:BA30
./status_load_2020-05-18-11-35-31_9185.err:BA30
итак,
1) есть пустые строки только со вторым совпадением и
2) полное совпадение (например, BA10004) не показано.
спасибо за помощь