繁体   English   中英

使用perl从两个文本文件中删除重复项(这两个文本文件是另一个perl脚本的输出)

[英]Removing duplicates from two textfiles using perl (this 2 text files are output of the other perl script)

已经编写了一个perl脚本,该脚本提供了两个文本文件作为输出。 第一个文本文件包含如下值0900 0915 0930 0945 1000 1015 1030 1045 1100〜,第二个文本文件包含以下值0900 0915 0930 1000 1015 1030 1100我想比较两个文件并删除匹配值并显示文本文件中的值不匹配。输出应为0945 1045,我尝试使用以下代码,

#!/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){
        print $out $x if (!grep (/^\Q$x\E$/,@arr2));
}

close $fh1;
close $fh2;
close $out;

但是我正在获取textfile1内容作为输出,这不是预期的输出。 如果我手动创建一个具有相同值的新文本文件并执行,则效果很好。 由于此文本文件是我的perl脚本的输出。 我认为它没有适当地将此作为输入。 有人可以帮我吗?

看来您的输入文件中没有单独包含这些数字,否则您的代码就可以正常工作。

尝试在foreach循环之前添加以下行

@arr1 = split (' ', join (' ', @arr1) );
@arr2 = split (' ', join (' ', @arr2) );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM