Ambil 100 baris log terakhir

164

Saya perlu mengambil 100 baris log terakhir dari file log. Saya mencoba perintah sed

sed -n -e '100,$p' logfilename

Tolong beritahu saya bagaimana saya bisa mengubah perintah ini untuk secara khusus mengambil 100 baris terakhir .

Surabhi
sumber
Ini disebutkan dalam manual: gnu.org/software/sed/manual/html_node/tail.html#tail , bagaimana sed dapat meniru ekor.
Lars Fischer
1
tail -f -n 100 logfilename
Amitesh Bharti

Jawaban:

302

Anda dapat menggunakan perintah tail sebagai berikut:

tail -100 <log file>   > newLogfile

Sekarang 100 baris terakhir akan hadir di newLogfile

EDIT:

Versi ekor terbaru seperti yang disebutkan oleh twalberg menggunakan perintah:

tail -n 100 <log file>   > newLogfile
Steephen
sumber
17
Perhatikan bahwa beberapa versi terbaru tailmemerlukan sintaks tail -n 100 <filename>...
twalberg
14

Lihat, skrip sed yang mencetak 100 baris terakhir yang 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 itu cukup efisien, tidak akan membaca semua file jika tidak perlu. Lihat jawaban saya dengan laporan strace untuktail ./huge-file : /unix/102905/does-tail-read-the-whole-file/102910#102910

Komunitas
sumber
13

"tail" adalah perintah untuk menampilkan bagian terakhir file, menggunakan sakelar yang tersedia dan tepat membantu kita untuk mendapatkan hasil yang lebih spesifik. saklar yang paling sering digunakan untuk saya adalah -n dan -f

RINGKASAN

tail [-F | -f | -r] [-q] [-b nomor | -c number | -n nomor] [file ...]

Sini

-n number: Lokasi adalah garis angka.

-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 itu adalah FIFO.

Ambil 100 baris log 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>
Amitesh Bharti
sumber
3

Saya tahu ini sudah sangat tua, tetapi, bagi siapa pun itu mungkin membantu.

less +F my_log_file.log

itu hanya dasar, dengan sedikit Anda dapat melakukan banyak hal yang lebih kuat. setelah Anda mulai melihat log, Anda dapat melakukan pencarian, pergi ke nomor baris, mencari pola, lebih banyak lagi dan lebih cepat untuk file besar.

itu seperti vim untuk log [sepenuhnya pendapat saya]

dokumentasi less less: https://linux.die.net/man/1/less

less cheatsheet: https://gist.github.com/glnds/8862214

mdsadiq
sumber
1
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename

baris pertama mengambil panjang (Total baris) file kemudian +1 di total baris setelah itu kita harus mengambil 100 catatan jadi, -99 dari total panjang kemudian hanya menempatkan variabel dalam perintah sed untuk mengambil 100 baris terakhir dari file

Saya harap ini akan membantu Anda.

axy_1976
sumber