Saya ingin mencari tanggal di suatu tempat di log 8 GB (teks).
Bisakah saya mem-bypass pembacaan sekuensial penuh, dan pertama-tama melakukan pemisahan biner dari file (ukuran), atau entah bagaimana menavigasi inodes
sistem file (yang saya tahu sangat sedikit tentang), untuk mulai membaca dari setiap titik pemisahan, sampai saya menemukan offset yang cocok dari mana saya harus memulai pencarian teks saya untuk baris yang mencantumkan tanggal?
tail
pembacaan baris terakhir tidak menggunakan pembacaan sekuensial normal, jadi saya ingin tahu apakah fasilitas ini entah bagaimana tersedia di bash, atau apakah saya perlu menggunakan Python atau C/C++… tetapi saya secara khusus tertarik pada bash
pilihan..
Jawaban yang Diterima:
for (( block = 0; block < 16; block += 1 ))
do
echo $block;
dd if=INPUTFILE skip=$((block*512))MB bs=64 count=1 status=noxfer 2> /dev/null |
head -n 1
done
yang .. tidak membuat file temp-split, melompati blok * 512MB data pada setiap proses, membaca 64 byte dari posisi itu dan membatasi output ke baris pertama 64 byte tersebut.
Anda mungkin ingin menyesuaikan 64 dengan apa pun yang Anda pikir Anda butuhkan.