Günde yaklaşık 200.000 satır büyüyen bir dosyam var ve hepsi üç satırlık bloklardan oluşuyor:
1358726575123 # key
Joseph Muller # name
carpenter # job
9973834728345
Andres Smith
student
7836472098652
Mariah Anthony
dentist
Şimdi, yaklaşık 10.000 anahtar modelini çıkardığım başka bir dosyam var 1358726575123
. Sonra birfor
bu desenler ile döngü ve onları ilk dosyaya karşı kontrol etmek zorunda. Dosya böyle bir desen içermiyorsa, daha sonraki işlemler için kalıbı üçüncü bir dosyaya kaydederim:
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
Örnek kod 10.000 kez büyük bir dosya greps ve bu döngü hakkında çalıştırmak bütün gün boyunca dakikada kez .
Büyük dosya büyümeye devam ettiğinden, bunları daha hızlı hale getirmek ve biraz CPU kaydetmek için ne yapabilirim? Ben bir şekilde dosyayı anahtarı ile sıralama (eğer öyleyse, nasıl?) Veya düz metin yerine bir db kullanarak yardımcı olacağını merak ediyorum ...