Solusi 1:
Saya kira Anda bisa menggunakan tail untuk hanya menampilkan sekitar 4GB terakhir dengan menggunakan -c
beralih
-c, --bytes=[+]NUM
keluarkan NUM byte terakhir; atau gunakan -c +NUM untuk menampilkan yang dimulai dengan byte NUM dari setiap file
Anda mungkin juga dapat melakukan sesuatu dengan dd dengan menyetel bs=1
dan skip
ke offset yang ingin Anda mulai, mis.
dd if=file bs=1024k skip=12g | grep something
Solusi 2:
Saya hanya memposting ini karena beberapa komentar memintanya.
Yang akhirnya saya gunakan adalah (file 15 GB). Ini bekerja sangat cepat dan menghemat banyak waktu saya.
tail -f -c 14G file | grep something
Saya juga melakukan benchmark yang sangat mendasar pada file yang sama. Saya menguji:
file grep xxx
// memakan waktu selamanya (> 5 menit)dd if=berkas bs=1 lewati=14G | grep xxx
// sangat cepat <1 detikekor -c 14g | grep xxx
// cukup cepat <2 detik
tail
hanya sedikit lebih pendek.
NB: akhiran yang digunakan g
dan G
berbeda per perintah (Ubuntu 15.10)
Solusi 3:
Ini tidak menjawab pertanyaan Judul, tetapi akan melakukan apa yang ingin Anda lakukan. Gunakan tac untuk membalikkan file, lalu gunakan grep untuk menemukan string Anda. Jika string Anda hanya muncul sekali atau beberapa kali dalam file, biarkan berjalan hingga menemukan jumlah kemunculan yang diketahui. Dengan begitu, jika asumsi Anda tentang letaknya di file salah, ia akan tetap menemukannya. Jika Anda ingin membatasinya, Anda dapat menggunakan head untuk melakukannya. Perintah head akan berada di antara tac dan grep.
Jadi perintahnya terlihat seperti:
tac < logfile | grep myString