Поиск и сопоставление строки между 2 файлами - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть два файла в сжатом формате

file1.gz

a2345
b1212
11212
f1212
derer
...
...
..
01234

file2.gz

g,a2345,1,2,3,4,5,6,7,a,v,c
f,b1212,2,5,6,7,8,9,0,1,2,3
d,f1212,7,8,a,b,c,w,e,r,t,y
....
....

Мне нужно построчно читать файл file1.gz и выполнять поиск в каждой строке файла file2.gz, и, если он совпадает, переадресовать еще один файл с именем file 3.

Пожалуйста, запомните мой file1.gz содержит 1 миллион строк и file2.gz содержит 5 миллионов строк , поэтому мне нужно немного обойтись в perl, чтобы он потреблял мало ресурсов на моем сервере Solaris.

Если сценарий perl можно выполнить, прочитав содержимое в zip-файле, это очень поможет.

1 Ответ

0 голосов
/ 02 февраля 2012

Если ваш вопрос о том, как открыть файлы gzip для чтения в Perl:

если у вас есть модуль Compress :: Zlib, то

use Compress::Zlib;

$f1 = gzopen( "file1.gz", "r" );
$f2 = gzopen( "file2.gz", "r" );

$bytes = $f1->gzreadline( $line );

и т. Д. До

perldoc Compress::Zlib

для просмотра документации.

Без этого модуля вы все еще можете сделать

open( F1, "gzip -dc file1.gz |" );
open( F2, "gzip -dc file2.gz |" );

, который требует немного больше времени, потому что вы создаете дополнительные процессы gzip для чтения файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...