จะได้รับน้อยลงเพื่อค้นหาได้เร็วขึ้นด้วยล็อกไฟล์ขนาดใหญ่?


15

ฉันมักจะจัดการกับไฟล์บันทึกขนาดใหญ่อย่างไม่น่าเชื่อ (> 3 GB) ฉันสังเกตุเห็นว่าไฟล์เหล่านี้มีประสิทธิภาพลดลงอย่างมาก บ่อยครั้งที่ฉันอยากจะกระโดดทำตรงกลางของไฟล์ แต่เมื่อฉันบอกน้อยกว่าให้ข้ามไปข้างหน้า 15 M บรรทัดมันใช้เวลาไม่กี่นาที ..

ปัญหาที่ฉันคิดคือความต้องการสแกนไฟล์น้อยลงสำหรับอักขระ '\ n' แต่ใช้เวลานานเกินไป

มีวิธีที่จะทำให้มันเป็นเพียงแค่พยายามที่จะชดเชยอย่างชัดเจน? เช่นพยายามที่จะชดเชย 1.5 พันล้านไบต์ในไฟล์ การดำเนินการนี้ควรเป็นลำดับความสำคัญเร็วกว่า ถ้าน้อยกว่าไม่ได้ให้ความสามารถดังกล่าวมีเครื่องมืออื่นที่ไม่?


หากคุณข้ามไฟล์สำหรับตัวอักษรต้องห้ามเป็นข้อสันนิษฐานที่เหมาะสมว่าคุณจะกำจัดตัวละครที่กล่าวมาข้างต้นหลังจากค้นหามันหรือไม่? ถ้าเป็นเช่นนั้นฉันขอได้ไหมperl -pi -e 's/\n//g;' <filename>
Mike Pennington

ขออภัยสกิมเป็นคำที่ผิด ควรใช้การสแกน น้อยกว่าโดยการสแกนการออกแบบสำหรับ newline (\ n) การสแกนนี้ใช้เวลานานมากในไฟล์ขนาดใหญ่
UsAaR33

คำตอบ:


21

คุณสามารถหยุดน้อยลงจากการนับบรรทัดเช่นนี้ less -n

หากต้องการข้ามไปยังสถานที่เฉพาะเช่นบอกว่า 50% less -n +50p /some/logนี่เป็นทันทีสำหรับฉันในล็อกไฟล์ 1.5GB

แก้ไข: สำหรับออฟเซ็ตไบต์เฉพาะ: less -n +500000000P ./blah.log


1
การนับบรรทัดไม่เคยเป็นปัญหา ฉันสามารถใช้ escp / ctrl-c เพื่อสิ่งนั้นได้ แต่นี่คือคำตอบที่แท้จริง P ข้ามไปยังอ็อฟเซ็ตไบต์ที่ระบุ!
UsAaR33

5

น้อยกว่าการเป็นเพจเจอร์เป็นสายที่มุ่งเน้นโดยเนื้อแท้ เมื่อคุณเริ่มต้นถ้ามันเป็นไฟล์ขนาดใหญ่มันจะพูดว่า "การนับจำนวนบรรทัด" และคุณกด ESC เพื่อหยุดการนั้น แต่อย่างอื่นมันจะทำสาย มันคือสิ่งที่มันทำ

หากคุณต้องการข้ามไปที่ตรงกลางของไฟล์และข้ามจุดเริ่มต้นคุณสามารถค้นหาจุดเริ่มต้นได้ตลอดเวลา tail -c +15000000 /some/log | lessฉันต้องการทำสิ่งที่ชอบ


3
คุณอาจหมายถึงtail -c ...หรือคุณมีlastคำสั่งแปลก ๆ
Alan Curry

ปัญหาเกี่ยวกับการใช้กลยุทธ์นี้คือการที่คุณไม่สามารถแสวงหาในไฟล์ทั้งหมดอีกต่อไปจากภายในน้อยกว่า (ค้นหาข้อความที่เฉพาะเจาะจง ฯลฯ )
Sekenre

@AlanCurry: มันเป็นเพียงการสะกดคำสำรอง ... <grin>
womble

0

less ดูเหมือนว่าจะมีค่าใช้จ่ายเล็กน้อยจากการตั้งค่าสถานที่

หากคุณใช้อักขระ ASCII เท่านั้นคุณสามารถเพิ่มความเร็วได้เล็กน้อยโดยใช้:

LC_ALL=C less big-log-file.log

ในกรณีของฉันปริมาณงานเพิ่มขึ้นจาก ~ 30M ib / s เป็น ~ 50 Mib / s (อัตราถูกผูกไว้กับ CPU)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.