Lihat, skrip sed yang mencetak 100 baris terakhir dapat Anda temukan di dokumentasi untuk 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
Bagi saya ini jauh lebih sulit daripada skrip Anda
tail -n 100 logfilename
jauh lebih sederhana. Dan cukup efisien, tidak akan membaca semua file jika tidak diperlukan. Lihat jawaban saya dengan laporan strace untuk tail ./huge-file
:https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910
Anda cukup menggunakan perintah berikut:-
ekor -NUMBER_OF_LINES FILE_NAME
misalnya tail -100 test.log
- akan mengambil 100 baris terakhir dari test.log
Dalam hal ini, jika Anda ingin keluaran di atas dalam file terpisah maka Anda dapat menyalurkan sebagai berikut:-
ekor -NUMBER_OF_LINES FILE_NAME> OUTPUT_FILE_NAME
misalnya tail -100 test.log > output.log
- akan mengambil 100 baris terakhir dari test.log dan menyimpannya ke file baru output.log)
Anda dapat menggunakan perintah ekor sebagai berikut:
tail -100 <log file> > newLogfile
Sekarang 100 baris terakhir akan hadir di newLogfile
EDIT:
Versi tail yang lebih baru seperti yang disebutkan oleh twalberg gunakan perintah:
tail -n 100 <log file> > newLogfile
"tail" adalah perintah untuk menampilkan bagian terakhir dari sebuah file, menggunakan sakelar yang tersedia dengan tepat membantu kita mendapatkan keluaran yang lebih spesifik. sakelar yang paling sering saya gunakan adalah -n dan -f
SINOPSIS
ekor [-F | -f | -r] [-q] [-b nomor | -c nomor | -n nomor] [file ...]
Di sini
-n number :Lokasinya adalah garis bilangan.
-f :Opsi -f menyebabkan tail tidak berhenti ketika akhir file tercapai, melainkan menunggu data tambahan ditambahkan ke input. Opsi -f diabaikan jika input standar adalah pipa, tetapi tidak jika berupa FIFO.
Ambil log 100 baris terakhir
To get last static 100 lines
tail -n 100 <file path>
To get real time last 100 lines
tail -f -n 100 <file path>