Une autre option consiste à charger le fichier dans une base de données. EG MySQL et MySQL Workbench.
Les bases de données sont des candidats parfaits pour travailler avec des fichiers volumineux
Si votre fichier d'entrée ne contient que des mots séparés par une nouvelle ligne, cela ne devrait pas être trop difficile.
Après avoir installé la base de données et MySQL Workbench, voici ce que vous devez faire.
Créez d'abord le schéma (cela suppose que les mots ne dépasseront pas 255 caractères, bien que vous puissiez modifier cela en augmentant la valeur de l'argument). La première colonne "idwords" est une clé primaire.
CREATE SCHEMA `tmp` ;
CREATE TABLE `tmp`.`words` (
`idwords` INT NOT NULL AUTO_INCREMENT,
`mywords` VARCHAR(255) NULL,
PRIMARY KEY (`idwords`));
Ensuite, importez les données: EG Cela importera tous les mots dans le tableau (cette étape peut prendre un certain temps. Mon conseil serait de lancer un test avec un petit fichier de mots d'abord et une fois que vous êtes sûr que le format est le même que le plus grand (tronquez le tableau .. IE Effacez-le et chargez l'ensemble de données complet).
LOAD DATA LOCAL INFILE "C:\\words.txt" INTO TABLE tmp.words
LINES TERMINATED BY '\r\n'
(mywords);
Ce lien peut aider à obtenir le bon format pour la charge.
https://dev.mysql.com/doc/refman/5.7/en/load-data.html
EG Si vous aviez besoin de sauter la première ligne, vous feriez ce qui suit.
LOAD DATA LOCAL INFILE "H:\\words.txt" INTO TABLE tmp.words
-- FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(mywords);
Enfin, enregistrez le fichier trié. Cela peut prendre un certain temps en fonction de votre ordinateur.
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
INTO OUTFILE 'C:\\sorted_words.csv';
Vous pouvez également rechercher les données à votre guise. EG Cela vous donnera les 50 premiers mots dans l'ordre croissant (à partir du 0e ou du premier mot).
SELECT tmp.words.mywords
FROM tmp.words
order by tmp.words.mywords asc
LIMIT 0, 50 ;
Bonne chance
Pete