Ответ 1
Во-первых, вы не используете полную мощность cat
. Цикл можно заменить просто
cat data/* > dnsFull
предполагая, что файл изначально пуст.
Затем есть все те временные файлы, которые заставляют программы ждать жестких дисков (обычно самые медленные части в современных компьютерных системах). Используйте конвейер:
cat data/* | sort | uniq > dnsOut
Это все еще расточительно, так как sort
может использовать то, что вы используете cat
и uniq
for; весь script можно заменить на
sort -u data/* > dnsOut
Если это еще не достаточно быстро, тогда поймите, что сортировка занимает время O (n lg n), в то время как дедупликация может выполняться в линейном времени с помощью Awk:
awk '{if (!a[$0]++) print}' data/* > dnsOut