Iată sarcina mea:
Am un flux sursă de jurnal live dintr-un proces de mesagerie. O mulțime de rezultate sunt irelevante pentru mine, dar există secțiuni pe care vreau să le colectez și să le evaluez separat.
Aceste blocuri încep cu „---BEGIN Request---” la sfârșitul unei linii separate care începe cu data/ora, numele gazdei și procesul[pid]: . Și, în consecință, un bloc se termină cu „---END Request---” la sfârșitul altei linii. Între acestea două este ceea ce vreau să surprind.
Încercările mele de a sed cu un fișier de extras de jurnal au eșuat. Am abordat acest lucru încercând să elimin totul în afara punctelor mele de focalizare, dar încă am primit fiecare linie. Poate cineva vede greșeala mea:
sed -r '/---END Solicitare---$/{
$!{ N
s/---END Solicitare---.?\n([^:]+: )---BEGIN Solicitare---$/---END Solicitare---\n\1---BEGIN Solicitare- --/
t sub-hit
:sub-dra
P
D
:sub-hit
}
}' sample.log
Cred că awk ar putea fi un instrument alternativ de utilizat aici, dar nu m-am uitat la performanța lui pentru a lucra la fluxurile de jurnal live.
Întotdeauna există cineva cu o soluție care folosește python sau orice alt limbaj. Sunt deschis la asta, dar consider că plănuiesc să folosesc acest lucru pe un flux de jurnal și nu pe fișiere text statice.
Iată fragmentul meu simplificat de jurnal de probă pentru testare. Am anonimizat și am eliminat unele lucruri.
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: ---BEGIN Request---
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: PUT /token/connect HTTP/2.0
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: gazdă: host-230-17-17-10
20 ian 14:20:47 host-230-17-17-10 tokenhandler[4230]: Accept: */*
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: Accept-Encoding: gzip, deflate, br
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: Accept-Language: de-de
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: Cache-Control: no-cache
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: Lungimea conținutului: 306
20 ian 14:20:47 host-230-17-17-10 tokenhandler[4230]: Content-Type: text/xml
20 ian 14:20:47 host-230-17-17-10 tokenhandler[4230]: User-Agent: TokenHandler/3.2
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: [date blob 1B]
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: <?xml version="1.0" encoding="UTF-8"?>
20 ian 14:20:47 host-230-17-17-10 tokenhandler[4230]: <!DOCTYPE și așa mai departe. Tăiați scurt aici în mod intenționat pentru askubuntu
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: ---END Solicitare---
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: ---BEGIN Response---
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: HTTP/1.1 200 OK
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: Conexiune: închidere
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: [date blob 1B]
20 ianuarie 14:20:47 host-230-17-17-10 tokenhandler[4230]: ---END Răspuns---
20 ianuarie 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/ conectați
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---BEGIN Request---
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: POST /v3/token/033aaed70bdce765ace3223a5dc5 HTTP/1.1
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: gazdă: host-230-17-17-10
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: Conexiune: închidere
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: Autorizare: Basic bWljcm9tZG06MjVuWjdWV3BjMkZaalRkZlRNVTNzaWdyS2xwZlRsVQ==
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: Conexiune: închidere
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: Lungimea conținutului: 0
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: [date blob 1B]
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---END Solicitare---
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: level=info component=tknzr method=add udid=033aaed70bdce765ace3223a5dc5 err=null taken=145.419185ms
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---BEGIN Response---
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: HTTP/1.1 200 OK
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: Conexiune: închidere
Jan 20 14:20:48 host-230-17-17-10 tokenhandler[4230]: Content-Type: application/json; set de caractere=utf-8
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: [date blob 1B]
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: {
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: „status”: „succes”,
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: „notification_id”: „FC88CDE8-D3AD-4607-602F-6005E70E83E2”
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: }
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---END Response---
20 ianuarie 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/033aaed705aced3223a
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---BEGIN Request---
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: PUT /token/connect HTTP/2.0
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: gazdă: host-230-17-17-10
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: Accept: */*
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: Accept-Encoding: gzip, deflate, br
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: Accept-Language: en-US,en;q=0.9
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: Cache-Control: no-cache
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: Lungimea conținutului: 306
20 ian 14:20:48 host-230-17-17-10 tokenhandler[4230]: Content-Type: text/xml
20 ian 14:20:48 host-230-17-17-10 tokenhandler[4230]: User-Agent: TokenHandler/3.2
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: [date blob 1B]
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: <?xml version="1.0" encoding="UTF-8"?>
20 ian 14:20:48 host-230-17-17-10 tokenhandler[4230]: <!DOCTYPE și așa mai departe. Tăiați scurt aici în mod intenționat pentru askubuntu
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---END Solicitare---
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---BEGIN Response---
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: HTTP/1.1 200 OK
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: Conexiune: închidere
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: [date blob 1B]
20 ianuarie 14:20:48 host-230-17-17-10 tokenhandler[4230]: ---END Response---