2013-04-22 48 views
1

我想絕對差請問如何比較和計算兩個文件之間的差異與AWK比較和計算每一個和2個文件中的awk

FILE1.TXT

orange 30 
banana 25 
apple 30 
pear 35 

文件2 .TXT

orange 25 
apple 32 
jackfruit 15 
pear 40 
pineapple 20 

輸出應爲兩個,並存儲在

之間的差值(與絕對值)

file3.txt:

orange 5 
banana 25 
apple 2 
pear 5 
jackfruit 15 
pineapple 20 

任何想法?

回答

2

這一個班輪應該工作:

awk '$1 in a{a[$1]=sqrt((a[$1]-$2)^2);next}{a[$1]=$2}END{for(x in a)print x, a[x]}' file1 file2 

你的榜樣:

kent$ head file1 file2 
==> file1 <== 
orange 30 
banana 25 
apple 30 
pear 35 

==> file2 <== 
orange 25 
apple 32 
jackfruit 15 
pear 40 
pineapple 20 

kent$ awk '$1 in a{a[$1]=sqrt((a[$1]-$2)^2);next}{a[$1]=$2}END{for(x in a)print x, a[x]}' file1 file2 
orange 5 
jackfruit 15 
apple 2 
pineapple 20 
pear 5 
banana 25 
+1

磨邊求平方根是矯枉過正獲取絕對值而不是數值最佳方法LY。 – 2013-04-22 17:48:31

0
awk '{ if (a[$1] == "") 
     a[$1] = $2; 
     else 
     { 
     if ((a[$1] - $2) < 0) 
     a[$1] = $2 - a[$1]; 
     else 
     a[$1] = a[$1] - $2; 
     } 
    } END { for (e in a) { print e, a[e] }}' file1.txt file2.txt 
2

一種方法:

$ awk '{x=a[$1]-$2;a[$1]=(x<0.0)?-x:x}END{for(k in a)print k,a[k]}' file1 file2 
orange 5 
jackfruit 15 
apple 2 
pineapple 20 
pear 5 
banana 25 
+0

謝謝sudo_O,命令工作完美! – Nate 2013-04-23 11:37:43

+0

@請盡情享受。不要忘了點擊旁邊的勾號來接受這個答案。這將顯示問題已經解決。 – 2013-04-23 11:41:29