我需要一个perl脚本来比较两个文件,并且不想打印两个文件中都存在的行

时间:2019-07-10 16:23:56

标签: perl

同时映射两个文本文件时,我想删除两个文件中存在的行

我已经尝试了很多命令,例如grep diff comm ...,但是所有内容都会整体打印出其中一个文件内容。

1 个答案:

答案 0 :(得分:0)

这里是一个例子:

use feature qw(say);
use strict;
use warnings;

{
    my $lines1 = read_lines( 'file1');
    my $lines2 = read_lines( 'file2');
    my %lines1 = map {$_ => 1} @$lines1;
    my %lines2 = map {$_ => 1} @$lines2;
    for (@$lines1) {
        say if !exists $lines2{$_};
    }
    for (@$lines2) {
        say if !exists $lines1{$_};
    }
}

sub read_lines {
    my ( $fn ) = @_;

    open ( my $fh, '<', $fn ) or die "Could not open file '$fn': $!";
    chomp( my @lines = <$fh> );
    close $fh;
    return \@lines;
}