два файла, в которых имя компонента и номер версии разделены пробелом:
cat file1
com.acc.invm:FNS_PROD 94.0.5
com.acc.invm:FNS_TEST_DCCC_Mangment 94.1.6
com.acc.invm:FNS_APIPlat_BDMap 100.0.9
com.acc.invm:SendEmail 29.6.113
com.acc.invm:SendSms 12.23.65
com.acc.invm:newSer 10.10.10
cat file2
com.acc.invm:FNS_PROD 94.0.5
com.acc.invm:FNS_TEST_DCCC_Mangment 94.0.6
com.acc.invm:FNS_APIPlat_BDMap 100.0.10
com.acc.invm:SendEmail 29.60.113
com.acc.invm:SendSms 133.28.65
com.acc.invm:distri_cob 110.10.10
необходимый вывод:
(1) список компонентов из файла1, которые есть в файле1 и отсутствуют в файле2.
(2) список компонентов из файла2, которые есть в файле1 и отсутствуют в файле2.
В этом примере желаемый результат:
компоненты из файла1:
com.acc.invm:newSer 10.10.10
компоненты из файла2:
com.acc.invm:distri_cob 110.10.10
ПРИМЕЧАНИЕ. Мы должны игнорировать, если компоненты представлены с другой версией.
Мой код: (1)
cat new.awk
{ split($2,a,/\./); curr = a[1]*10000 + a[2]*100 + a[3] }
NR==FNR { prev[$1] = curr; next }
!($1 in prev) && (curr > prev[$1])
/usr/bin/nawk -f new.awk f2 f1
ВЫХОД
com.acc.invm:newSer 10.10.10
(2)
/usr/bin/nawk -f new.awk f1 f2
ВЫХОД
com.acc.invm:distri_cob 110.10.10
Верна ли эта логика? И
кто-нибудь может помочь мне, как я могу написать new.awk в самом моем скрипте, поэтому для его запуска не требуется файл new.awk.