- 論壇徽章:
- 3
|
- [nick@Nick_OpenClient test]$ awk '{if(NR!=FNR){a[$1,$2]=$3}else{b[$1,$2]=$1" "$2}}END{for(i in b)print b[i],a[i]}' a1 a2
- 104.13 30.20 0.023
- 105.23 32.57 -0.1335
- 103.31 30.35 -0.0123
- 103.01 29.98 -0.0091
- 104.73 31.44 0.1693
- 106.37 30.11 0.0126
- 105.12 29.62 0.0123
- 103.76 30.91 0.2355
- 103.75 29.57 0.0035
復(fù)制代碼 這樣可以,順便解釋一下,使用NR!=FNR是表示處理第二個(gè)文件,可以看到后面跟著的是a[$1,$2]=$3,就是搞了以$1,$2為下標(biāo)的數(shù)組,然后對(duì)應(yīng)的值為$3,后面else的意思是在處理第一個(gè)文件的時(shí)候,也是一個(gè)數(shù)組,同樣以$1,$2為下標(biāo),但是值就不同了,因?yàn)槲覀円蛴〉慕Y(jié)果是$1 $2 $3, 所以就將第二個(gè)數(shù)列的值為$1" "$2。然后對(duì)第二個(gè)數(shù)列的下標(biāo)遍歷,打印出來(lái)就是了
但是處理的過(guò)程中我發(fā)現(xiàn)個(gè)問(wèn)題,有一行104.13 30.2這個(gè)在第一個(gè)文件里是30.20但是在第二個(gè)文件里30.2,在匹配的過(guò)程中這個(gè)是不會(huì)匹配的,所以文件的內(nèi)容最好一致,不知道有沒(méi)有什么辦法可以統(tǒng)一一下,請(qǐng)高手指點(diǎn) |
|