ดังนั้นการดึงเปิดไฟล์ด้วยcat
และจากนั้นใช้grep
ในการรับสายการจับคู่เพียงทำให้ฉันได้รับเมื่อฉันทำงานกับชุดบันทึกเฉพาะที่ฉันจัดการกับ มันต้องการวิธีการจับคู่ลายเส้นกับรูปแบบ แต่เพื่อคืนส่วนของเส้นหลังการจับคู่เท่านั้น ส่วนก่อนและหลังการแข่งขันจะแตกต่างกันอย่างสม่ำเสมอ ฉันได้เล่นโดยใช้sed
หรือawk
แต่ไม่สามารถหาวิธีกรองบรรทัดเพื่อลบส่วนหนึ่งก่อนการแข่งขันหรือเพียงแค่คืนส่วนหลังการแข่งขันทั้งคู่จะทำงาน นี่คือตัวอย่างของบรรทัดที่ฉันต้องการกรอง:
2011-11-07T05:37:43-08:00 <0.4> isi-udb5-ash4-1(id1) /boot/kernel.amd64/kernel: [gmp_info.c:1758](pid 40370="kt: gmp-drive-updat")(tid=100872) new group: <15,1773>: { 1:0-25,27-34,37-38, 2:0-33,35-36, 3:0-35, 4:0-9,11-14,16-32,34-38, 5:0-35, 6:0-15,17-36, 7:0-16,18-36, 8:0-14,16-32,34-36, 9:0-10,12-36, 10-11:0-35, 12:0-5,7-30,32-35, 13-19:0-35, 20:0,2-35, down: 8:15, soft_failed: 1:27, 8:15, stalled: 12:6,31, 20:1 }
ส่วนที่ฉันต้องการคือทุกอย่างหลังจาก "จนตรอก"
เบื้องหลังที่อยู่เบื้องหลังคือฉันสามารถค้นหาได้ว่ามีบางสิ่งที่แผงลอย:
cat messages | grep stalled | wc -l
สิ่งที่ฉันต้องทำคือค้นหาว่ามีโหนดบางจุดค้างอยู่กี่ครั้ง (ระบุโดยส่วนก่อนแต่ละโคลอนหลังจาก "จนตรอก" ถ้าฉันแค่ grep สำหรับสิ่งนั้น (เช่น 20 :) มันอาจส่งคืนบรรทัดที่อ่อนนุ่มล้มเหลว แต่ ไม่มีแผงลอยซึ่งไม่ได้ช่วยฉันฉันต้องกรองเฉพาะส่วนที่ค้างไว้ดังนั้นฉันจึงสามารถ grep สำหรับโหนดที่เฉพาะเจาะจงจากผู้ที่ได้จนตรอก
สำหรับเจตนาและวัตถุประสงค์ทั้งหมดนี้เป็นระบบ freebsd ที่มี core GNU มาตรฐาน utils แต่ฉันไม่สามารถติดตั้งอะไรเพิ่มเติมเพื่อช่วย
sed
วิธีแก้ปัญหาและไม่รักษาช่องว่างพิเศษ