-1

我正在使用下面的脚本来比较两个文件:UEDP35.txtBB_UEDP35.txt. 如果我手动输入,这个脚本效果很好,但现在我需要更多的东西。

在一个文件夹中,我有许多文件,例如UEDP35.txt. 例如:UEDP1.txt,UEDP2.txtUEDP3.txt。类似地,还有另一组文件,BB_UEDP35.txt例如BB_UEDP1.txt,等BB_UEDP2.txt,在这两个文件名中都很常见。BB_UEDP3.txtUEDP

如果有一对匹配的 UDP 编号,那么我想将这两个文件作为脚本的输入。如果在比较它们时发现任何差异,则必须将它们写入另一个新文件。这必须作为循环来完成。

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.txtB.txt. 在 fileA.txt中,第一个具有五位数字的文件。在文件B.txt中给出了整数。如果文件的前五位数字A.txt与第二个文件不匹配,B.txt那么我需要将数字打印B.txt到另一个文件中。

一个.txt

81270,UEDP35

81274,UEDP35

87562,UEDP35

89537,UEDP35

90050,UEDP35

B.txt

8127047667

8756209276

9956176149

8127463873

8953713146

9935805068

A.txtUEDP35.txtB.txtBB_UEDP35.txt

4

1 回答 1

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;
  }
}
于 2012-07-26T18:34:18.167 回答