У меня есть пара текстовых файлов (A.txt
и B.txt
), которые выглядят так (может иметь ~ 10000 строк в каждом)
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
Мне нужно проверить, присутствует ли каждая строка в файле A.txt
и в B.txt
(B.txt
тоже может иметь больше, это нормально).
Дело в том, что строки могут быть в любом порядке в двух файлах, поэтому я думаю, что отсортирую их в каком-то определенном порядке в обоих файлах в O(nlogn)
, а затем сопоставлю каждую строку в A.txt
со следующим строки в B.txt
в O(n)
. Я мог бы реализовать хеш, но файлы велики, и это сравнение происходит только один раз, после чего эти файлы регенерируются, поэтому я не думаю, что это хорошая идея.
Каков наилучший способ сортировки файлов в Perl? Любое упорядочение подойдет, просто нужно некоторое упорядочение.
Например, при упорядочении словаря это будет
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
Как я упоминал ранее, любой порядок будет таким же хорошим, если Perl быстр в этом.
Я хочу сделать это из кода Perl, после открытия файла вот так
open (FH, "<A.txt");
Любые комментарии, идеи и т. Д. Будут полезны.