您能否建议我使用任何CPAN模块来搜索大型文件?
该文件是一个大约1500万到2000万行的结构化数据,但我只需要找到大约25,000个匹配的条目,所以我不想将整个文件加载到哈希中.
谢谢.
Perl非常适合这样做,无需外部模块(来自CPAN或其他地方).
一些代码:
while (<STDIN>) {
if (/regular expression/) {
process each matched line
}
}
Run Code Online (Sandbox Code Playgroud)
您需要提出自己的正则表达式来指定要在文件中匹配的行.匹配后,您需要自己的代码来处理每个匹配的行.
将上面的代码放在脚本文件中,并将文件重定向到stdin.
扫描整个文件可能是最快的方法.您还可以尝试File :: Sorted,它将对给定记录进行二进制搜索.在2500万行文件中找到一条记录应该要求每条记录大约15-20次搜索.这意味着要搜索25,000条记录,您只需要大约0.5百万次搜索/比较,相比之下,25,000,000条记录可以通过天真的方式检查每一行.
磁盘IO就是这样,你可能想先尝试一下简单的方法,但File :: Sorted是理论上的胜利.
| 归档时间: |
|
| 查看次数: |
1203 次 |
| 最近记录: |