我使用下面的脚本来比较两个文件:UEDP35.txt
和BB_UEDP35.txt
。如果我手动输入,但是现在我需要更多的东西,这个脚本效果很好。
在一个文件夹中,我有许多文件,例如UEDP35.txt
。例如:UEDP1.txt
,UEDP2.txt
,UEDP3.txt
等。类似地,还有另一组文件,例如BB_UEDP35.txt
,例如BB_UEDP1.txt
,BB_UEDP2.txt
,BB_UEDP3.txt
等UEDP
在两个文件名中都很常见。
如果有一对匹配的UEDP编号,那么我想将这两个文件作为脚本的输入。如果在比较它们时发现任何差异,则必须将它们写入另一个新文件。这必须以循环方式完成。
use warnings;
use strict;
open AIN, "<UEDP35.txt ";
open BIN, "<BB_UEDP35.csv";
my %seen;
while (<ain>) {
my $v = (split(/,/))[0];
$seen{$v}++;
}
while (<bin>) {
my $v = (split)[0];
print "$vn" if not $seen{substr($v, 0, 5)};
}
close AIN;
close BIN;
ls -1 UEDP* | while read line; do f1=echo $line | cut -f1 -d'.' ; f2=ls -1 BB_UEDP* | grep $f1;f3=echo $line | cut -f1; ./test.sh $f3 $f2;done
示例:我有两个文件:A.txt
和B.txt
。在文件A.txt
中,第一个文件的数字为五位数。在文件B.txt
中,给出了整数。如果文件A.txt
的前五位与第二个文件B.txt
不匹配,那么我需要将B.txt
中的数字打印到另一个文件。
A.TXT
81270,UEDP35
81274,UEDP35
87562,UEDP35
89537,UEDP35
90050,UEDP35
B.txt
8127047667
8756209276
9956176149
8127463873
8953713146
9935805068
此处A.txt
为UEDP35.txt
,B.txt
为BB_UEDP35.txt
。
答案 0 :(得分:0)
use strict;
use warnings;
for my $bb_uedp_file (<BB_UEDP*>) {
if ($bb_uedp_file =~ /BB_UEDP(\d+)/) {
my $uedp_file = "UEDP$1.txt";
open AIN, "<$uedp_file" or die($uedp_file);
open BIN, "<$bb_uedp_file" or die($bb_uedp_file);
# ... rest of the script ...
close AIN;
close BIN;
}
}