[英]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.