在2个文件之间查找和匹配字符串

时间:2012-02-02 15:05:29

标签: perl

我有两个压缩格式的文件

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有100万行 file2.gz有500万行因此我需要在perl中进行一些解决方案以便它消耗低资源在我的Solaris服务器中。

如果可以通过阅读zip文件中的内容来处理perl脚本,那将非常有帮助。

1 个答案:

答案 0 :(得分:0)

如果您的问题是如何打开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进程来读取文件,因此会产生更多的开销。