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

标签 perl grep gzip

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

最佳答案

您可以将 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 不会解压缩整个文件,而是在读取到您的句柄时解压缩,因此您也可以使用它。

关于perl - 使用perl,有没有办法打开gzip文件并读取行而不完全解压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34232328/

相关文章:

perl - 在 FastCGI 中 fork() 的正确方法是什么?

perl selenium:Test::Exception、正确用法和好的代码示例?

java - 在Java中使用byte[]数组将.gz文件分割成指定的文件大小

Windows CMD 文件/文件夹压缩使用 7z 或替代 .tar.gz

python - Perl 5 面向对象编程

perl:如何对除 "root"键属性以外的内容排序JSON结构

grep 用于包含数字的进程(ps)中的路径

grep -\bword\b 和\<word\> 在 GREP 中是否等价,\<,\> 的用法是什么?

linux - 通过管道 grep 列出文件

c - libcurl (linux, C) - 是否有一种内置的方法来发布/放置 gzip 压缩请求?