два файла, в которых имя компонента и номер версии разделены пробелом:
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
cat file2
com.acc.invm:FNS_PROD 95.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
желаемый результат:
com.acc.invm:FNS_PROD 95.0.5
com.acc.invm:SendSms 133.28.65
необходимый вывод: все компоненты из файла1 с более высокой версией, чем в файле2, только в первом десятичном разряде.
в желаемом выводе появляется "com.acc.invm:FNS_PROD", потому что 96 (в файле 1)> 95 (в файле 2)
«com.acc.invm:FNS_TEST_DCCC_Mangment» не приходит, потому что 94.1.6 (в файле 1) 94.0.6 (в файле 2), первое десятичное значение такое же (94 = 94).
попробовал код awk, но не повезло.
tst.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 file2 file1 tst.awk
Любое предложение будет приветствоваться.