В качестве альтернативы вы можете загрузить его в таблицу SQLite с индексом.
./sqlite3 my_database.db
> CREATE TABLE lines(line TEXT);
> CREATE INDEX i_line ON lines (line ASC);
> -- @ is not in our file
> .separator @
> .import '/home/me/my_file.txt' lines
> .output '/home/me/my_duplicates.txt'
> SELECT line FROM lines GROUP BY line HAVING COUNT(*) > 1;
> .q
Таким образом, у вас все еще есть база данных и индекс, запросить его во второй раз для другой вещи может быть более эффективным, чем анализэто снова с sort + uniq.