ファイル「tmpcsv2」の一連の変数を「uniq_id」の変数と比較する必要があります。以下にファイルの詳細を示します。
tmpcsv2 -> このファイルは別のスクリプト 'script1' によって更新され、'script1' の実行ごとに 'tmpcsv2' の新しい変数が更新されます (追加ではありません)。いいえ。変数の数は 1 から 200 まで可能です。
eg:
2042344352
2470697747
2635527510
3667769962
uniq-id -> これは変数の固定セットです (数で約 100K)。
(Business Name,Job ID,Job Size)
biz,1000036446,225210640
biz,100006309,6710840
biz,1000069211,2084019000
biz,1000118720,34194040
biz,1000150241,212322636
以下に示すように、「for」ループと「if」を使用してそれらを比較していますが、これを行うためのより簡単または高速な (影響の少ない) 方法はありますか? これを実行すると、結果を出力するのに非常に長い時間がかかります。印刷コマンドはテスト用であり、後で削除されます!
****Part of a bigger script****
amt=0
mjc=0
for jbid in `cat tmpcsv2` #Pick ID for match & calculation
do
printf "Checking ID $jbid\n" >> Acsv3.tmp
for bsid in `cat uniq_id` #Matching jobs & size calulation
do
ckid=`echo $bsid | cut -d "," -f2` #ckid is the ID to check
jbsiz=`echo $bsid | cut -d "," -f3` #size of the ID
if [ $jbid == $ckid ]
then
printf "Matched at $ckid\n" #Print on Match found
printf "Valid -> $jbid\n" >> Bcsv3.tmp
((mjc++)) #Increment Matched Job Count
amt=$((amt+jbsiz)) #Add size of matched jobs
break
else
printf "No Match at $cksid\n" #No matches
fi
done
printf "Check for ID $jbid done\n" >> Acsv3.tmp
printf "Matched $mjc jobs with combined size of $amt\n" >> Acsv3.tmp
done
****End of Comparision****