Otra opción es cargar el archivo en una base de datos. EG MySQL y MySQL Workbench.
Las bases de datos son candidatas perfectas para trabajar con archivos grandes
Si su archivo de entrada contiene solo palabras separadas por una nueva línea, esto no debería ser demasiado difícil.
Después de haber instalado la base de datos y MySQL Workbench, esto es lo que debe hacer.
Primero cree el esquema (esto supone que las palabras no serán más largas que 255 caracteres, aunque podría alterar esto aumentando el valor del argumento). La primera columna "idwords" es una clave primaria.
CREATE SCHEMA `tmp` ;
CREATE TABLE `tmp`.`words` (
`idwords` INT NOT NULL AUTO_INCREMENT,
`mywords` VARCHAR(255) NULL,
PRIMARY KEY (`idwords`));
En segundo lugar, importe los datos: EG Esto importará todas las palabras en la tabla (este paso puede tardar un tiempo en completarse. Mi consejo sería ejecutar primero una prueba con un pequeño archivo de palabras y una vez que esté seguro de que el formato es el mismo que el más grande (truncar la tabla. IE Borrarlo y cargar el conjunto de datos completo).
LOAD DATA LOCAL INFILE "C:\\words.txt" INTO TABLE tmp.words
LINES TERMINATED BY '\r\n'
(mywords);
Este enlace puede ayudar a obtener el formato correcto para la carga.
https://dev.mysql.com/doc/refman/5.7/en/load-data.html
EG Si necesita omitir la primera línea, haría lo siguiente.
LOAD DATA LOCAL INFILE "H:\\words.txt" INTO TABLE tmp.words
-- FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(mywords);
Finalmente guarde el archivo ordenado. Esto puede tomar un tiempo también dependiendo de su PC.
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
INTO OUTFILE 'C:\\sorted_words.csv';
También puede buscar los datos a voluntad como lo desee. EG Esto le dará las primeras 50 palabras en orden ascendente (comenzando desde la 0 o primera palabra).
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
LIMIT 0, 50 ;
Buena suerte
pete