У мене є файл, який зростає близько 200 000 рядків на день, і він формується з блоків з трьох рядків як таких:
1358726575123 # key
Joseph Muller # name
carpenter # job
9973834728345
Andres Smith
student
7836472098652
Mariah Anthony
dentist
Тепер у мене є ще один файл, з якого я дістаю близько 10 000 ключових моделей, таких як 1358726575123
. Потім я запускаю for
цикл із цими шаблонами і маю перевірити їх на першому файлі. Якщо файл не містить такого шаблону, я зберігаю шаблон у третьому файлі для подальшої обробки:
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
Приклад коду охоплює величезний файл у 10000 разів, і я запускаю цей цикл приблизно раз на хвилину, протягом цілого дня .
Оскільки величезний файл постійно зростає, що я можу зробити, щоб зробити все це швидше і зберегти деякий процесор? Цікаво, чи допоможе сортування файлу якось за його ключем (якщо так, то як?) Чи використання db замість простого тексту допоможе ...