Un'altra opzione è quella di caricare il file in un database. EG MySQL e MySQL Workbench.
I database sono candidati perfetti per lavorare con file di grandi dimensioni
Se il tuo file di input contiene solo parole separate da una nuova riga, questo non dovrebbe essere troppo difficile.
Dopo aver installato il database e MySQL Workbench questo è ciò che dovresti fare.
Per prima cosa crea lo schema (questo presuppone che le parole non saranno più lunghe di 255 caratteri anche se potresti modificarlo aumentando il valore dell'argomento). La prima colonna "idwords" è una chiave primaria.
CREATE SCHEMA `tmp` ;
CREATE TABLE `tmp`.`words` (
`idwords` INT NOT NULL AUTO_INCREMENT,
`mywords` VARCHAR(255) NULL,
PRIMARY KEY (`idwords`));
In secondo luogo importare i dati: EG Questo importerà tutte le parole nella tabella (questo passaggio potrebbe richiedere del tempo per il completamento. Il mio consiglio sarebbe di eseguire prima un test con un piccolo file di parole e una volta che sei sicuro che il formato sia lo stesso di il più grande (troncare la tabella .. IE Cancellarlo e caricare il set di dati completo).
LOAD DATA LOCAL INFILE "C:\\words.txt" INTO TABLE tmp.words
LINES TERMINATED BY '\r\n'
(mywords);
Questo link può aiutare a ottenere il formato giusto per il caricamento.
https://dev.mysql.com/doc/refman/5.7/en/load-data.html
EG Se fosse necessario saltare la prima riga, procedere come segue.
LOAD DATA LOCAL INFILE "H:\\words.txt" INTO TABLE tmp.words
-- FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(mywords);
Infine salva il file ordinato. Questo potrebbe richiedere del tempo anche a seconda del tuo PC.
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
INTO OUTFILE 'C:\\sorted_words.csv';
Puoi anche cercare i dati a tuo piacimento. EG Questo ti darà le prime 50 parole in ordine crescente (a partire dalla 0a o prima parola).
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
LIMIT 0, 50 ;
Buona fortuna
Pete