นี่คืองานของฉัน:
ฉันมีสตรีมต้นทางของเอาต์พุตบันทึกสดจากกระบวนการส่งข้อความ ผลลัพธ์จำนวนมากไม่เกี่ยวข้องกับฉัน แต่มีส่วนที่ฉันต้องการรวบรวมและประเมินแยกต่างหาก
บล็อกเหล่านั้นเริ่มต้นด้วย "---BEGIN Request---" ที่ส่วนท้ายของบรรทัดแยกต่างหากซึ่งขึ้นต้นด้วยวันที่/เวลา ชื่อโฮสต์ และกระบวนการ[pid]: และบล็อกจะลงท้ายด้วย "---END Request---" ที่ท้ายบรรทัดอื่น ระหว่างสองสิ่งนี้คือสิ่งที่ฉันต้องการจับภาพ
ความพยายามของฉันที่ sed ด้วยไฟล์บันทึกที่ตัดตอนมาล้มเหลว ฉันเข้าใกล้สิ่งนี้โดยพยายามลบทุกอย่างที่อยู่นอกจุดโฟกัส แต่ฉันก็ยังได้ทุกๆ บรรทัด อาจมีคนเห็นข้อผิดพลาดของฉัน:
sed -r '/---สิ้นสุดคำขอ---$/{
$!{ น
s/---สิ้นสุดคำขอ---.?\n([^:]+: )---BEGIN คำขอ---$/---สิ้นสุดคำขอ---\n\1---BEGIN คำขอ- --/
ตีย่อย
:sub-พลาด
พี
ง
:ซับฮิต
}
}' ตัวอย่าง.ล็อก
ฉันคิดว่า awk อาจเป็นเครื่องมือทางเลือกที่จะใช้ที่นี่ แต่ฉันยังไม่ได้พิจารณาถึงประสิทธิภาพของการทำงานกับสตรีมบันทึกสด
มีคนที่มีวิธีแก้ปัญหาเสมอโดยใช้ python หรือภาษาอื่น ๆ ฉันเปิดรับ แต่พิจารณาว่าฉันวางแผนที่จะใช้สิ่งนี้กับสตรีมบันทึกไม่ใช่ไฟล์ข้อความคงที่
นี่คือข้อความที่ตัดตอนมาจากตัวอย่างบันทึกอย่างง่ายของฉันสำหรับการทดสอบ ฉันไม่เปิดเผยตัวตนและลบบางสิ่งออก
20 ม.ค. 14:20:47 น. host-230-17-17-10 tokenhandler[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-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]: ยอมรับการเข้ารหัส: gzip, deflate, br
20 ม.ค. 14:20:47 น. host-230-17-17-10 tokenhandler[4230]: ยอมรับภาษา: de-de
20 ม.ค. 14:20:47 น. host-230-17-17-10 tokenhandler[4230]: การควบคุมแคช: ไม่มีแคช
20 มกราคม 14:20:47 host-230-17-17-10 tokenhandler[4230]: ความยาวเนื้อหา: 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 tokenhandler[4230]: [ข้อมูล 1B blob]
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]: --- สิ้นสุดคำขอ ---
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 ตกลง
20 มกราคม 14:20:47 host-230-17-17-10 tokenhandler[4230]: การเชื่อมต่อ: ปิด
20 มกราคม 14:20:47 host-230-17-17-10 tokenhandler[4230]: [ข้อมูล 1B blob]
20 ม.ค. 14:20:47 น. host-230-17-17-10 tokenhandler[4230]: --- สิ้นสุดการตอบกลับ ---
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 tokenhandler[4230]: POST /v3/token/033aaed70bdce765ace3223a5dc5 HTTP/1.1
20 ม.ค. 14:20:48 น. host-230-17-17-10 tokenhandler[4230]: โฮสต์: 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]: ความยาวเนื้อหา: 0
20 มกราคม 14:20:48 host-230-17-17-10 tokenhandler[4230]: [ข้อมูล 1B blob]
20 ม.ค. 14:20:48 น. host-230-17-17-10 tokenhandler[4230]: --- สิ้นสุดคำขอ ---
20 มกราคม 14:20:48 host-230-17-17-10 tokenhandler[4230]: level=info component=tknzr method=add udid=033aaed70bdce765ace3223a5dc5 err=null take=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 ตกลง
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 tokenhandler[4230]: [ข้อมูล 1B blob]
20 มกราคม 14:20:48 host-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 tokenhandler[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]: --- สิ้นสุดการตอบกลับ ---
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-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]: ยอมรับการเข้ารหัส: gzip, deflate, br
20 มกราคม 14:20:48 host-230-17-17-10 tokenhandler[4230]: ยอมรับภาษา: en-US,en;q=0.9
20 มกราคม 14:20:48 host-230-17-17-10 tokenhandler[4230]: การควบคุมแคช: ไม่มีแคช
20 มกราคม 14:20:48 host-230-17-17-10 tokenhandler[4230]: ความยาวเนื้อหา: 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 tokenhandler[4230]: [ข้อมูล 1B blob]
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]: --- สิ้นสุดคำขอ ---
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 ตกลง
20 ม.ค. 14:20:48 น. host-230-17-17-10 tokenhandler[4230]: การเชื่อมต่อ: ปิด
20 มกราคม 14:20:48 host-230-17-17-10 tokenhandler[4230]: [ข้อมูล 1B blob]
20 ม.ค. 14:20:48 น. host-230-17-17-10 tokenhandler[4230]: --- สิ้นสุดการตอบกลับ ---