Мне нужно сравнить набор переменных из файла 'tmpcsv2' с переменными в 'uniq_id', я подробно описываю файлы ниже.Простой способ сравнения переменных
tmpcsv2 -> Этот файл обновляется с помощью другого скрипта 'script1', и каждый запуск 'script1' обновляет (не добавляет) новые переменные в 'tmpcsv2'. Нет. переменных может быть 1 и может доходить до 200.
eg:
2042344352
2470697747
2635527510
3667769962
Uniq-ид -> Это фиксированный набор переменных (около 100K в нет.)
(Business Name,Job ID,Job Size)
biz,1000036446,225210640
biz,100006309,6710840
biz,1000069211,2084019000
biz,1000118720,34194040
biz,1000150241,212322636
Я использую «для 'loops +' 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****
Каков точный формат ввода? Обратите внимание, что вы фактически не используете переменную 'jbid' в любом месте, кроме вывода, поэтому сами сравнения даже не включают этот файл. – ormaaj
@ormaaj, я отредактировал сценарий, чтобы показать использование «jbid», я использую его для сравнения переменных. – Marcos