J'ai deux gros fichiers (6 Go chacun). Ils sont non formés, avec des lignes lignes (\n
) comme séparateurs. Comment puis-je leur différer? Cela devrait prendre sous 24h.
La réponse la plus évidente consiste simplement à utiliser la commande diff et c'est probablement une bonne idée d'ajouter le paramètre --Speed-Large-Files à celui-ci.
diff --speed-large-files a.file b.file
Vous mentionnez des fichiers non formés alors vous devez peut-être trier les fichiers d'abord
sort a.file > a.file.sorted
sort b.file > b.file.sorted
diff --speed-large-files a.file.sorted b.file.sorted
vous pouvez enregistrer la création d'un fichier de sortie supplémentaire en utilisant la 2e sortie de tri directement dans DIFF
sort a.file > a.file.sorted
sort b.file | diff --speed-large-files a.file.sorted -
De toute évidence, ils vont mieux sur un système avec beaucoup de mémoire disponible et vous aurez probablement besoin de nombreux espaces de disque gratuits.
Votre question n'était pas claire si vous avez déjà essayé ces derniers. Si oui, il serait utile de savoir ce qui s'est mal passé (a pris trop de long, etc.). J'ai toujours constaté que les commandes de tri des stocks et de difformes ont tendance à faire au moins aussi bien que des commandes personnalisées, à moins que des propriétés spécifiques très spécifiques du domaine des fichiers permettent de faire les choses différemment.
Tri des entrées et raconter le programme diff
. Les entrées sont triées pour une vitesse massive. Je ne connais pas de diff
avec une option comme celle-là, mais comm
assume une entrée triée et sera beaucoup plus rapide si cela suffit à vos besoins.