Вот моя задача:
У меня есть исходный поток вывода живого журнала из процесса обмена сообщениями. Многие результаты не имеют для меня значения, но есть разделы, которые я хочу собрать и оценить отдельно.
Эти блоки начинаются с "---BEGIN Request---" в конце отдельной строки, которая начинается с даты/времени, имени хоста и процесса[pid]: . И соответственно блок заканчивается "---END Request---" в конце другой строки. Между этими двумя я хочу запечатлеть.
Мои попытки sed с файлом выдержки из журнала не увенчались успехом. Я подошел к этому, пытаясь удалить все, что находится за пределами моих точек фокусировки, но я все равно получил каждую линию. Может кто увидит мою ошибку:
sed -r '/---END Запрос---$/{
$!{ Н
s/---END Request---.?\n([^:]+: )---BEGIN Request---$/---END Request---\n\1---BEGIN Request- --/
т суб-хит
:суб-мисс
п
Д
:под-хит
}
} 'sample.log
Я думаю, что awk может быть альтернативным инструментом для использования здесь, но я не изучал его производительность для работы с потоками журналов в реальном времени.
Всегда есть кто-то с решением, использующим python или любой другой язык. Я открыт для этого, но считаю, что планирую использовать это в потоке журналов, а не в статических текстовых файлах.
Вот мой упрощенный образец журнала для тестирования. Я анонимизировал и удалил некоторые вещи.
20 января 14:20:47 host-230-17-17-10 обработчик токенов [4230]: --- BEGIN Request ---
20 января, 14:20:47 host-230-17-17-10 tokenhandler[4230]: PUT /token/connect HTTP/2.0
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: Host: host-230-17-17-10
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: Принять: */*
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: Accept-Encoding: gzip, deflate, br
20 января, 14:20:47 host-230-17-17-10 tokenhandler[4230]: Accept-Language: de-de
20 января, 14:20:47 host-230-17-17-10 tokenhandler[4230]: Cache-Control: no-cache
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: Content-Length: 306
20 января, 14:20:47 host-230-17-17-10 tokenhandler[4230]: Content-Type: text/xml
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: User-Agent: TokenHandler/3.2
20 января 14:20:47 host-230-17-17-10 обработчик токенов [4230]: [данные большого двоичного объекта 1B]
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: <?xml version="1.0" encoding="UTF-8"?>
20 января, 14:20:47 host-230-17-17-10 tokenhandler[4230]: <!DOCTYPE и так далее. Намеренно обрезано здесь для askubuntu
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: ---END Request---
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: --- BEGIN Response---
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: HTTP/1.1 200 OK
20 января 14:20:47 host-230-17-17-10 tokenhandler [4230]: соединение: закрыть
20 января 14:20:47 host-230-17-17-10 обработчик токенов [4230]: [данные большого двоичного объекта 1B]
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: ---END Response---
20 января 14:20:47 host-230-17-17-10 tokenhandler[4230]: transport=http method=PUT status=200 proto=HTTP/2.0 host=10.17.17.240 user_agent=TokenHandler/3.2 path=/token/ соединять
20 января 14:20:48 host-230-17-17-10 tokenhandler [4230]: --- BEGIN Request ---
20 января 14:20:48 обработчик токенов host-230-17-17-10 [4230]: POST /v3/token/033aaed70bdce765ace3223a5dc5 HTTP/1.1
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Host: host-230-17-17-10
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Соединение: закрыть
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Авторизация: Basic bWljcm9tZG06MjVuWjdWV3BjMkZaalRkZlRNVTNzaWdyS2xwZlRsVQ==
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Соединение: закрыть
20 января, 14:20:48 host-230-17-17-10 tokenhandler[4230]: Content-Length: 0
20 января 14:20:48 host-230-17-17-10 обработчик токенов [4230]: [данные большого двоичного объекта 1B]
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---END Request---
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: level=info component=tknzr method=add udid=033aaed70bdce765ace3223a5dc5 err=null принял=145.419185ms
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: --- BEGIN Response---
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: HTTP/1.1 200 OK
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Соединение: закрыть
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Content-Type: application/json; кодировка = utf-8
20 января 14:20:48 host-230-17-17-10 обработчик токенов [4230]: [данные большого двоичного объекта 1B]
20 января 14:20:48 хост-230-17-17-10 tokenhandler[4230]: {
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: «статус»: «успех»,
20 января 14:20:48 обработчик токенов host-230-17-17-10 [4230]: "notification_id": "FC88CDE8-D3AD-4607-602F-6005E70E83E2"
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: }
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---END Response---
20 января, 14:20:48 host-230-17-17-10 tokenhandler[4230]: transport=http method=POST status=200 proto=HTTP/1.1 host=10.17.17.230 user_agent=path=/v3/token/033aaed70bdce765ace3223a5dc5
20 января 14:20:48 host-230-17-17-10 tokenhandler [4230]: --- BEGIN Request ---
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: PUT /token/connect HTTP/2.0
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Host: host-230-17-17-10
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Принять: */*
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Accept-Encoding: gzip, deflate, br
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Accept-Language: en-US,en;q=0.9
20 января, 14:20:48 host-230-17-17-10 tokenhandler[4230]: Cache-Control: no-cache
20 января, 14:20:48 host-230-17-17-10 tokenhandler[4230]: Content-Length: 306
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Content-Type: text/xml
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: User-Agent: TokenHandler/3.2
20 января 14:20:48 host-230-17-17-10 обработчик токенов [4230]: [данные большого двоичного объекта 1B]
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: <?xml version="1.0" encoding="UTF-8"?>
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: <!DOCTYPE и так далее. Намеренно обрезано здесь для askubuntu
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---END Request---
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: --- BEGIN Response---
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: HTTP/1.1 200 OK
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: Соединение: закрыть
20 января 14:20:48 host-230-17-17-10 обработчик токенов [4230]: [данные большого двоичного объекта 1B]
20 января 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---END Response---