2015-12-11 2 views
1

Я в основном хочу создать дескриптор файла для gzip и использовать его для сопоставления строк, как и в любом другом файле. Мне нужно сравнить строки из двух файлов gzip, но каждый из них составляет 15 ГБ. Я использовал Archive :: Extract и File :: temp для чтения, но мой жесткий диск заполняется.Использование perl, есть ли способ открыть gzip-файлы и прочитать строки без полной декомпрессии?

+2

IO :: Compress :: Gzip – ikegami

+0

'gzip -dc' будет распаковываться до стандартного вывода. 'zcat' будет делать то же самое. Если это не tar-файлы. Я знаю, что вы спрашивали о Perl, но это вариант. – Hambone

+0

'zgrep' может быть другой возможностью – toolic

ответ

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 не распаковывает весь файл, а распаковывает его, когда он читает ваш дескриптор, поэтому вы также можете использовать его.

Смежные вопросы