Saya memiliki file yang bertambah sekitar 200.000 baris sehari, dan semuanya terbentuk dengan blok tiga baris seperti itu:
1358726575123 # key
Joseph Muller # name
carpenter # job
9973834728345
Andres Smith
student
7836472098652
Mariah Anthony
dentist
Sekarang, saya memiliki file lain dari mana saya mengekstrak sekitar 10.000 pola kunci, seperti 1358726575123
. Kemudian saya menjalankan for
loop dengan pola-pola ini dan harus memeriksanya terhadap file pertama. Jika file tidak mengandung pola seperti itu, saya menyimpan pola di file ketiga untuk diproses lebih lanjut:
for number in $(grep -o '[0-9]\{12\}' file2); do # finds about 10.000 keys
if ! grep -q ^$number$ file1; then # file1 is a huge file
printf "$number\n" >>file3 # we'll process file3 later
fi
done
Kode contoh menangkap sebuah file besar 10.000 kali, dan saya menjalankan loop ini sekitar satu menit sekali, sepanjang hari .
Karena file besar terus bertambah, apa yang bisa saya lakukan untuk membuat semua ini lebih cepat dan menghemat CPU? Saya ingin tahu apakah menyortir file dengan kuncinya (jika demikian, bagaimana?) Atau menggunakan db sebagai ganti teks biasa akan membantu ...