写一个3个文件的输出文件超集,不重复行

时间:2013-11-12 06:15:00

标签: regex perl

我有三个文本文件1.txt,2.txt和3.txt,它们是perl脚本的输出。所有3个文件中都有一些共同的行。请帮助编写一个perl脚本,其输出是另一个文本文件,它是1.txt和2.txt以及3.txt的超集,不应该在其中重复行。

2 个答案:

答案 0 :(得分:3)

最简单的方法是使用哈希来跟踪您之前看到过的线条。但是对于非常大的文件,这会占用太多内存。

use strict;
use warnings;
use autodie 'open';

open my $out, '>', 'superset.txt';

my %seen;
for my $filename ('1.txt', '2.txt', '3.txt') {
    open my $in, '<', $filename;
    while ( my $line = <$in> ) {
        print $out $line unless $seen{$line}++;
    }
}

答案 1 :(得分:1)

.txt个文件中的唯一行打包一个内衬,

perl -ne '$s{$_}++ or print' *txt > out.txt