sort -u <data.txt >clean.txt
Все, что вам нужно, это большой диск.
sort
достаточно эффективен: он автоматически разбивает файл на управляемые фрагменты, сортирует каждый по отдельности, а затем объединяет их (что можно сделать в O (N) время); и при объединении он удалит дубликаты (из-за опции -u
). Но вам потребуется как минимум место для выходного файла, плюс место для всех промежуточных файлов.