-1

以下のスクリプトを使用して、2 つのファイルを比較しています:UEDP35.txtBB_UEDP35.txt. このスクリプトは、入力を手動で行うとうまく機能しますが、さらに何かが必要です。

1つのフォルダー内に、のようなファイルがいくつかありますUEDP35.txt。の例: UEDP1.txt、など。同様に、別のファイルのセットもあります。UEDP2.txt例:などは、両方のファイル名で共通です。UEDP3.txtBB_UEDP35.txtBB_UEDP1.txtBB_UEDP2.txtBB_UEDP3.txtUEDP

UEDP 番号が一致するペアが存在する場合は、これら 2 つのファイルをスクリプトへの入力として指定します。比較中に相違点が見つかった場合は、それらを別の新しいファイルに書き込む必要があります。これはループとして実行する必要があります。

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

例: と の 2 つのファイルがA.txtありB.txtます。fileA.txtで、5 桁の数字を持つ最初のファイル。ファイルB.txtには整数が与えられます。ファイルの最初の 5 桁がA.txt2 番目のファイルと一致しない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.txtUEDP35.txtB.txtがありBB_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 に答える