Perl只读取特定的gz文件行
发布时间:2020-12-16 06:19:55 所属栏目:大数据 来源:网络整理
导读:我正在尝试创建一个解析脚本,解析一个压缩了gunzip的大文本文件(200万行).我只想解析文本文件中的一系列行.到目前为止,我已经使用zgrep -n找到两行,提到我知道将开始的字符串并结束我感兴趣的文件部分. 在我的测试用例文件中,我感兴趣的只是读取123080到1393
我正在尝试创建一个解析脚本,解析一个压缩了gunzip的大文本文件(200万行).我只想解析文本文件中的一系列行.到目前为止,我已经使用zgrep -n找到两行,提到我知道将开始的字符串并结束我感兴趣的文件部分.
在我的测试用例文件中,我感兴趣的只是读取123080到139361行.我发现Tie :: File使用它返回的数组对象访问文件行,但不幸的是,这对于枪压缩文件我不起作用和我一起工作. 对于枪械文件,是否有以下内容? use Tie::File tie @fileLinesArray,'Tie::File',"hugeFile.txt.gz" my $startLine = 123080; my $endLine = 139361; my $lineCount = $startLine; while ($lineCount <= $endLine){ my $line = @fileLinesArray[$lineCount] blah blah... } 解决方法
使用
IO::Uncompress::Gunzip这是一个核心模块:
use IO::Uncompress::Gunzip; my $z = IO::Uncompress::Gunzip->new('file.gz'); $z->getline for 1 .. $start_line - 1; for ($start_line .. $end_line) { my $line = $z->getline; ... } 处理大文件时,Tie::File变得非常慢并且内存耗尽. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |