J'ai deux fichiers texte (A.txt
et B.txt
) qui ressemblent à ceci (pourrait avoir ~ 10000 lignes chacun)Comment trier des lignes dans un fichier texte en Perl?
processa,id1=123,id2=5321
processa,id1=432,id2=3721
processa,id1=3,id2=521
processb,id1=9822,id2=521
processa,id1=213,id2=1
processc,id1=822,id2=521
Je dois vérifier si chaque ligne dans le fichier A.txt
est présent dans B.txt
aussi bien (B.txt
pourrait avoir plus aussi, c'est correct).
La chose est que les lignes peuvent être dans un ordre quelconque dans les deux fichiers, donc je pense que je vais les trier dans un ordre particulier dans les deux fichiers dans O(nlogn)
puis correspondre à chaque ligne A.txt
aux lignes suivantes dans B.txt
au O(n)
. Je pourrais mettre en place un hachage, mais les fichiers sont gros et cette comparaison ne se produit qu'une seule fois après laquelle ces fichiers sont régénérés, donc je ne pense pas que ce soit une bonne idée.
Quelle est la meilleure façon de trier les fichiers en Perl? Toute commande ferait, il faut juste une commande.
Par exemple, Comme je l'ai mentionné dans le dictionnaire commande, ce serait
processa,id1=123,id2=5321
processa,id1=213,id2=1
processa,id1=3,id2=521
processa,id1=432,id2=3721
processb,id1=9822,id2=521
processc,id1=822,id2=521
avant, toute commande serait tout aussi bien, aussi longtemps que Perl est rapide à le faire.
Je veux le faire à partir du code Perl, après l'ouverture du fichier comme si
open (FH, "<A.txt");
commentaires, idées, etc. seraient utiles.
Si vous faites 10 000 lignes, et que vous envisagez de l'utiliser plus d'une fois - à tout le moins j'utiliserais SQL Lite. –
Un hachage et un tri nécessitent tous les deux de charger le fichier 'A.txt' entier en mémoire. Pourquoi pensez-vous que le tri est préférable à l'utilisation d'un hachage? – mob
@mobrule: Je pensais que Perl pourrait avoir un moyen intelligent de le trier, étant donné que c'est un langage qui est construit pour traiter le texte. Un moyen qui vaut mieux que de mettre en place un hachage moi-même. D'après les réponses ci-dessous, il semble que le hachage soit après tout une bonne idée! – Lazer