У меня есть такие журналы
2019-11-14T20:03:48.917Z INFO Thread1 Audit ... Operation status="success" ... id=dad69655-07d0-4daf-a639-b8e3257fa6bd msg...
2019-11-14T20:03:48.908Z INFO Thread Audit Operation status="success" ... id=67ab8c3b-b57c-4328-b483-81582be0341d msg...
2019-11-14T20:03:48.909Z INFO Thread Audit ... Operation status="success" ... id=b0485887-004a-4f55-b287-f5c9cf609787 msg...
2019-11-14T20:03:48.911Z INFO Thread2 Audit ... Operation status="success" ... id=35ca8c14-757f-474a-a929-494781c4679f msg...
2019-11-14T20:03:48.915Z INFO Thread2 Audit ... Operation status="failure" ... id=72f73c66-da37-11e9-8d68-005056bce6a5 msg...
2019-11-14T20:03:48.917Z INFO Thread1 Audit ... Operation status="success" ... id=26ece804-da3a-11e9-bfed-005056bce25b msg...
2019-11-14T20:03:48.919Z INFO Thread Not ... Operation status="failure" ... id=1b31f53f-66d5-475f-ace3-ed1905e8f818 msg...
2019-11-14T20:03:48.921Z INFO Thread Not ... Operation status="success" ... id=84ee4947-633f-4ccb-832e-7b380052401c msg...
2019-11-14T20:03:48.948Z INFO Thread Audit ... Operation status="failure" ... id=26ece804-da3a-11e9-bfed-005056bce25b msg...
2019-11-14T20:03:48.950Z INFO Thread Audit ... Operation status="success" ... id=8837cb5f-48f5-49db-8ade-a47b96527501 msg...
...
означает, что между ними может быть что угодно, ...
также может иногда быть одним пробелом.
msg...
означает, что id не всегда находится в конце строки, msg...
также может иногда быть нулевым.
На самом деле это довольно сложно, но основная структура c такова.
Ввод - Мой ввод - это заданный идентификатор.
и
Условие - условие состоит в том, чтобы просмотреть строку журнала, содержащую этот идентификатор, чей OPstatus равен ошибка и относится к классу Audit.
Найдя эту строку журнала, возьмите ее поток и возьмите все журналы, принадлежащие этому потоку, до предыдущего журнала аудита этого потока.
Итак, Input указаны строки журнала и идентификатор = 26ece804-da3a-11e9-bfed-005056bce25b
.
Вывод Я ожидаю, что это
2019-11-14T20:03:48.909Z INFO Thread Audit ... Operation status="success" ... id=b0485887-004a-4f55-b287-f5c9cf609787
2019-11-14T20:03:48.919Z INFO Thread Not ... Operation status="failure" ... id=1b31f53f-66d5-475f-ace3-ed1905e8f818 msg...
2019-11-14T20:03:48.921Z INFO Thread Not ... Operation status="success" ... id=84ee4947-633f-4ccb-832e-7b380052401c msg...
2019-11-14T20:03:48.948Z INFO Thread Audit ... Operation status="failure" ... id=26ece804-da3a-11e9-bfed-005056bce25b msg...
То, что я пробовал это -
awk '{if($0~/.*Audit.*26ece804-da3a-11e9-bfed-005056bce25b.*/) system("grep -w " $3 " " FILENAME "| sed \"0,/.*Audit.*Operation status="success".*/d\" | sed \"/Operation status="failure"/{n;d;}\"" )}' file.log
Пожалуйста, помогите!