ฉันต้องการดึง 100 ท่อนสุดท้ายจากไฟล์บันทึก ฉันลองใช้คำสั่ง sed
sed -n -e '100,$p' logfilename
โปรดแจ้งให้ฉันทราบว่าฉันจะเปลี่ยนคำสั่งนี้เพื่อดึงข้อมูล100 บรรทัดล่าสุดได้อย่างไร
ฉันต้องการดึง 100 ท่อนสุดท้ายจากไฟล์บันทึก ฉันลองใช้คำสั่ง sed
sed -n -e '100,$p' logfilename
โปรดแจ้งให้ฉันทราบว่าฉันจะเปลี่ยนคำสั่งนี้เพื่อดึงข้อมูล100 บรรทัดล่าสุดได้อย่างไร
คำตอบ:
ดู, สคริปต์ sed ที่พิมพ์ 100 บรรทัดสุดท้ายที่คุณสามารถหาได้ในเอกสารประกอบสำหรับ sed ( https://www.gnu.org/software/sed/manual/sed.html#tail ):
$ cat sed.cmd
1! {; H; g; }
1,100 !s/[^\n]*\n//
$p
$ sed -nf sed.cmd logfilename
สำหรับฉันมันยากกว่าสคริปต์ของคุณมาก
tail -n 100 logfilename
ง่ายกว่ามาก และมันค่อนข้างมีประสิทธิภาพมันจะไม่อ่านไฟล์ทั้งหมดหากไม่จำเป็น ดูคำตอบของฉันด้วยรายงาน strace สำหรับtail ./huge-file
: /unix/102905/does-tail-read-the-whole-file/102910#102910
"tail" คือคำสั่งให้แสดงส่วนสุดท้ายของไฟล์การใช้สวิตช์ที่มีอยู่จะช่วยให้เราได้ผลลัพธ์ที่เฉพาะเจาะจงมากขึ้น สวิตช์ที่ใช้มากที่สุดสำหรับฉันคือ -n และ -f
สรุป
หาง [-F | -f | -r] [-q] [-b number | -c number | หมายเลข -n] [ไฟล์ ... ]
ที่นี่
จำนวน -n: สถานที่ตั้งเป็นเส้นจำนวน
-f: อ็อพชัน -f ทำให้ tail ไม่หยุดเมื่อถึงจุดสิ้นสุดไฟล์ แต่จะรอข้อมูลเพิ่มเติมเพื่อผนวกเข้ากับอินพุต อ็อพชัน -f ถูกละเว้นหากอินพุตมาตรฐานเป็นไพพ์ แต่ไม่ใช่ถ้าเป็น FIFO
ดึงบันทึก 100 บรรทัดล่าสุด
To get last static 100 lines
tail -n 100 <file path>
To get real time last 100 lines
tail -f -n 100 <file path>
ฉันรู้ว่ามันเก่ามาก แต่สำหรับใครก็ตามที่มันอาจช่วยได้
less +F my_log_file.log
นั่นเป็นเพียงพื้นฐานโดยมีน้อยคุณสามารถทำสิ่งที่มีประสิทธิภาพมากขึ้น เมื่อคุณเริ่มเห็นบันทึกที่คุณสามารถทำการค้นหาได้ให้ไปที่หมายเลขบรรทัดค้นหารูปแบบยิ่งไปกว่านั้นจะเร็วกว่าสำหรับไฟล์ขนาดใหญ่
มันเหมือนเสียงเรียกเข้าสำหรับท่อนซุง [โดยสิ้นเชิงความคิดเห็นของฉัน]
เอกสารต้นฉบับของLess Less : https://linux.die.net/man/1/less
cheatsheet ที่น้อยลง: https://gist.github.com/glnds/8862214
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename
บรรทัดแรกใช้ความยาว (จำนวนบรรทัดทั้งหมด) ของไฟล์จากนั้น +1 ในบรรทัดทั้งหมดหลังจากนั้นเราต้อง fatch 100 เร็กคอร์ดดังนั้น -99 จากความยาวทั้งหมดจากนั้นใส่ตัวแปรในคำสั่ง sed เพื่อดึง 100 บรรทัดสุดท้ายจากไฟล์
ฉันหวังว่านี่จะช่วยคุณได้