Надежное удаление дубликатов почти так же сложно, как и сортировка файла.Как указывает другой ответ, не существует гарантированного способа точного обнаружения дубликатов без сохранения полной копии каждой строки в памяти, что, по-видимому, является именно тем, что вы пытаетесь избежать.
Вы можете сохранитьпамять или дисковый индекс хеш-кодов, и используйте их для извлечения фактических строк из файлового хранилища для сравнения, но это, по сути, будет дублировать то, что база данных сможет сделать для вас.
Альтернативой является пост-обработайте файл, как только он будет завершен.Команда сортировки UNIX довольно хороша для больших файлов ( Как команда сортировки UNIX может сортировать очень большой файл? ), поэтому я ожидаю, что стандартный подход командной строки UNIX будет работать разумно:
sort my-file-of-strings.txt | uniq > my-filtered-file-of-strings.txt
(обратите внимание, что файлы должны быть отсортированы перед передачей в uniq для удаления дубликатов).
Если у вас нет этих инструментов (или эквивалентов), то вы всегда можете попробовать реализоватькакой-то вариант внешнего слияния рассортируй сам.