使用perl,有没有办法打开gzip文件并通过行读取而不完全解压缩?

时间:2015-12-11 20:49:16

标签: perl grep gzip

我基本上想要为gzip创建一个文件句柄,并使用它来匹配字符串,就像我任何其他文件一样。我需要比较两个gzip文件中的行,但它们每个都是15 GB。我正在使用Archive :: Extract和File :: temp来读取它们但我的硬盘驱动器已经填满了。

1 个答案:

答案 0 :(得分:2)

您可以将gzip -dc传递到文件句柄中,如下所示:

 open(my $fh1, '-|', '/usr/bin/gzip -dc filename1.gz') or die $!;
 open(my $fh2, '-|', '/usr/bin/gzip -dc filename2.gz') or die $!;

它应缓冲gzip的输出,而不是在磁盘上使用空间。

PerlIO::gzip不解压缩整个文件,但在读取到句柄时解压缩,因此您也可以使用它。