Я пытаюсь создать разные файлы журнала для каждого пользователя на основе шаблона. #
Поскольку файлы журналов достаточно велики (пара сотен ГБ), я хочу использовать awk или подобную команду оболочки для эффективной обработки.
Пример журнала ввода выглядит следующим образом:
2019-09-01T06:04:55+00:00 xxxxxxxx CEF: 0|XXX XXXX XXX|YYY-OS|9.0.3|end|TRAFFIC|1|rt=Sep 12 2019 06:04:55 GMT deviceExternalId=11111000000 dvchost=ABCDEFGHIJ src=0.0.0.0 dst=0.0.0.0 sourceTranslatedAddress=0.0.0.0 destinationTranslatedAddress=0.0.0.0 cs1Label=Rule_name cs1=sec_t2u_allow_ssl suser=intra\\test.user1 duser= app=ssl\n
2019-09-01T06:04:55+00:00 xxxxxxxx CEF: 0|XXX XXXX XXX|YYY-OS|9.0.3|end|TRAFFIC|1|rt=Sep 12 2019 06:04:55 GMT deviceExternalId=11111000000 dvchost=ABCDEFGHIJ src=0.0.0.0 dst=0.0.0.0 sourceTranslatedAddress=0.0.0.0 destinationTranslatedAddress=0.0.0.0 cs1Label=Rule_name cs1=sec_t2u_allow_ssl suser=intra\\ts-test.user2 duser= app=ssl\n
2019-09-01T06:04:55+00:00 xxxxxxxx CEF: 0|XXX XXXX XXX|YYY-OS|9.0.3|end|TRAFFIC|1|rt=Sep 12 2019 06:04:55 GMT deviceExternalId=11111000000 dvchost=ABCDEFGHIJ src=0.0.0.0 dst=0.0.0.0 sourceTranslatedAddress=0.0.0.0 destinationTranslatedAddress=0.0.0.0 cs1Label=Rule_name cs1=sec_t2u_allow_ssl suser= duser= app=ssl\n
Некоторые имена пользователей присутствуют, но не для всех. В случае, если "suser =" я хочу поместить его в отдельный файл
Ожидаемый формат вывода будет:
###test.user1.log -->###
2019-09-01T06:04:55+00:00 xxxxxxxx CEF: 0|XXX XXXX XXX|YYY-OS|9.0.3|end|TRAFFIC|1|rt=Sep 12 2019 06:04:55 GMT deviceExternalId=11111000000 dvchost=ABCDEFGHIJ src=0.0.0.0 dst=0.0.0.0 sourceTranslatedAddress=0.0.0.0 destinationTranslatedAddress=0.0.0.0 cs1Label=Rule_name cs1=sec_t2u_allow_ssl suser=intra\\\\test.user1 duser= app=ssl\n
.....
###ts-test.user2.log --> ###
2019-09-01T06:04:55+00:00 xxxxxxxx CEF: 0|XXX XXXX XXX|YYY-OS|9.0.3|end|TRAFFIC|1|rt=Sep 12 2019 06:04:55 GMT deviceExternalId=11111000000 dvchost=ABCDEFGHIJ src=0.0.0.0 dst=0.0.0.0 sourceTranslatedAddress=0.0.0.0 destinationTranslatedAddress=0.0.0.0 cs1Label=Rule_name cs1=sec_t2u_allow_ssl suser=intra\\ts-test.user2 duser= app=ssl\n
.....
###others.log --> ###
2019-09-01T06:04:55+00:00 xxxxxxxx CEF: 0|XXX XXXX XXX|YYY-OS|9.0.3|end|TRAFFIC|1|rt=Sep 12 2019 06:04:55 GMT deviceExternalId=11111000000 dvchost=ABCDEFGHIJ src=0.0.0.0 dst=0.0.0.0 sourceTranslatedAddress=0.0.0.0 destinationTranslatedAddress=0.0.0.0 cs1Label=Rule_name cs1=sec_t2u_allow_ssl suser= duser= app=ssl\n
Я попытался найти регулярное выражение, соответствующее шаблону.
Это регулярное выражение "(\ bsuser \ b) = (. *? (? = \ S \ w + = | $))" можно использовать для сопоставления с шаблоном, аналогичным "suser = ABCD \\ ц-test.user"