解析文件以获得第一次出现的唯一行

时间:2013-06-05 14:46:17

标签: perl

我需要解析一个大文件(超过500 MB)并获得独特的行。 确实,我需要第一次出现独特的线条。

当我的RAM有限时,你能否提出有效的方法来完成这项工作?

2 个答案:

答案 0 :(得分:2)

使用哈希。它们是重复数据删除的典型方法:

my %data;
while (<$fh>) {
    .... # other code
    $data{$key} //= $value;
}

已定义或赋值//=运算符等同于:

if (not defined $data{$key}) {
    $data{$key} = $value;
}

这意味着只保存此键的第一个值。

请注意,使用哈希的重复数据删除仅适用于完全相同的字符串。

答案 1 :(得分:0)

使用哈希来跟踪您已经看过的行。

my %seen;
while (<$fh>) {
   next if $seen{$_}++;      # duplicate
   ...
}