Saya memiliki file besar yang diurutkan dengan miliaran baris panjang variabel. Diberikan baris baru saya ingin tahu nomor byte yang akan didapat jika sudah dimasukkan dalam file yang diurutkan.
Contoh
a\n
c\n
d\n
f\n
g\n
Diberikan input 'foo' saya akan mendapatkan output 9.
Ini mudah dilakukan dengan hanya menelusuri seluruh file, tetapi karena miliaran baris panjang variabel akan lebih cepat untuk melakukan pencarian biner.
Apakah alat pengolah teks seperti itu sudah ada?
Edit:
Itu sekarang: https://gitlab.com/ole.tange/tangetools/blob/master/bsearch/bsearch
text-processing
search
Ole Tange
sumber
sumber
Jawaban:
Saya tidak mengetahui beberapa alat standar melakukan ini. Namun Anda dapat menulis sendiri. Misalnya skrip ruby berikut harus melakukan pekerjaan.
Agak sulit karena setelah pencarian Anda biasanya berada di tengah-tengah beberapa baris dan oleh karena itu perlu melakukan satu readline untuk sampai ke awal baris berikut, yang dapat Anda baca dan bandingkan dengan kunci Anda.
sumber
sort -r
dansort -n
?(Ini bukan jawaban yang benar untuk pertanyaan Anda, hanya titik awal.)
Saya menggunakan sgrep ( sortir grep) dalam situasi yang sama.
Sayangnya (kita memerlukan kondisi saat ini) tidak memiliki output byte-offset; tapi saya pikir itu bisa dengan mudah ditambahkan.
sumber
Berdasarkan solusi Michas di sini adalah program yang lebih lengkap:
https://gitlab.com/ole.tange/tangetools/blob/master/bsearch/bsearch
sumber