0

perl スクリプトの出力である 3 つのテキスト ファイル 1.txt、2.txt、および 3.txt があります。3 つのファイルすべてに共通の行がいくつかあります。出力が 1.txt と 2.txt と 3.txt のスーパーセットであり、行が繰り返されてはならない別のテキスト ファイルである perl スクリプトを作成するのを手伝ってください。

4

2 に答える 2

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}++;
    }
}
于 2013-11-12T06:29:36.423 に答える