其具有組件的名稱和版本號由空格分隔兩個文件:awk中的文件比較
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和不列表存在於file2中。
(2)來自file2的組件列表,它們位於file1中,而不在file2中。
在本例中所期望的輸出是:
從file1的組件:
com.acc.invm:newSer 10.10.10
從file2的組件:
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
OUTPUT
com.acc.invm:newSer 10.10.10
(2)
/usr/bin/nawk -f new.awk f1 f2
OUTPUT
com.acc.invm:distri_cob 110.10.10
這個邏輯是正確的嗎? AND
任何人都可以幫助我如何在腳本本身中編寫new.awk,因此不應該需要new.awk文件來運行它。