从一个文本文件中删除重复值并计算不重复值

时间:2013-11-25 10:23:04

标签: perl

我有两个文本文件,它们是perl脚本的输出。第一个文本文件包含

之类的值
1200 1215 1230 1245 1300 1315 1330 1345 1400 

,第二个文本文件包含

之类的值
1200 1200 1200 1215 1215 1230 1230 1230 1245 1245 1245 1300 1300 1300 1315 1315 1315 1330 1330 1345 1345 1400 1400 1400. 

我想从textfile2中删除重复项并将其与textfile1进行比较,并在textfile2中显示不匹配值和重复值。例如:我想显示“textfile2中的no.of 1200是3,1215中没有值是2..etc。如何为此编写perl代码?

2 个答案:

答案 0 :(得分:0)

foreach my $x (@arr1){
    my $cnt;
    print $out "no of $x is $cnt" if $cnt = grep (/$x/,@arr2);
}

这是通过评论编辑您的代码。

#!/usr/bin/perl
use strict;
use warnings;
$\="\n";
open my $fh1, '<', 'textfile1.txt' or die $!;
open my $fh2, '<', 'textfile2.txt' or die $!;
open my $out, '>', 'output.txt' or die $!;
chomp(my @arr1=<$fh1>);
chomp(my @arr2=<$fh2>);

foreach my $x (@arr1){
    my $cnt;
    print $out "no of $x is $cnt" if $cnt = grep (/$x/,@arr2);
}
close $fh1;
close $fh2;
close $out

仅数组测试代码

#!/usr/bin/perl
use strict;
use warnings;
my @arr1=(1200, 1215, 1230, 1245, 1300, 1315, 1330, 1345, 1400);
my @arr2=(1200, 1200, 1200, 1215, 1215, 1230, 1230, 1230, 1245, 1245, 1245, 1300, 1300, 1300, 1315, 1315, 1315, 1330, 1330, 1345, 1345, 1400, 1400, 1400);

foreach my $x (@arr1){
    my $cnt;
    print "no of $x is $cnt\n" if $cnt = grep (/$x/,@arr2);
}

答案 1 :(得分:-2)

您是否已开始使用Perl?如果没有,这在excel中很容易做到。