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