Uma outra opção é carregar o arquivo em um banco de dados. E.G MySQL e MySQL Workbench.
Os bancos de dados são candidatos perfeitos para trabalhar com arquivos grandes
Se o seu arquivo de entrada contiver apenas palavras separadas por uma nova linha, isso não deve ser difícil.
Depois de instalar o banco de dados e o MySQL Workbench, isso é o que você precisa fazer.
Primeiro, crie o esquema (isso pressupõe que as palavras não terão mais que 255 caracteres, embora você possa alterar isso aumentando o valor do argumento).
A primeira coluna "idwords" é uma chave primária.
CREATE SCHEMA 'tmp' ;
CREATE TABLE 'tmp'.'words' (
'idwords' INT NOT NULL AUTO_INCREMENT,
'mywords' VARCHAR(255) NULL,
PRIMARY KEY ('idwords'));
Em segundo lugar, importe os dados:
EG Isso importará todas as palavras para a tabela (essa etapa pode demorar um pouco para ser concluída. Meu conselho seria executar um teste com um arquivo de palavras pequenas primeiro e depois de ter certeza de que o formato é o mesmo que o maior (truncar) a tabela .. IE Limpe e carregue o conjunto de dados completo).
LOAD DATA LOCAL INFILE "C:\words.txt" INTO TABLE tmp.words
LINES TERMINATED BY '\r\n'
(mywords);
Esse link pode ajudar a obter o formato correto para o carregamento.
link
E.G Se você precisasse pular a primeira linha, faria o seguinte.
LOAD DATA LOCAL INFILE "H:\words.txt" INTO TABLE tmp.words
-- FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(mywords);
Finalmente, salve o arquivo classificado. Isso pode demorar um pouco, dependendo do seu PC.
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
INTO OUTFILE 'C:\sorted_words.csv';
Você também pode pesquisar os dados à vontade como quiser.
E.G Isso lhe dará as primeiras 50 palavras em ordem crescente (a partir da 0ª ou primeira palavra).
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
LIMIT 0, 50 ;
Boa sorte
Pete