1

awkで2つのファイルの違いを比較して計算する方法を教えてください

file1.txt

orange 30  
banana 25  
apple 30  
pear 35 

file2.txt

orange 25  
apple 32  
jackfruit 15  
pear 40  
pineapple 20 

出力は、2 つの値の差 (および絶対値) であり、次の場所に格納されます。

file3.txt:

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

何か案は?

4

3 に答える 3

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
于 2013-04-22T16:29:56.873 に答える
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
于 2013-04-22T16:34:35.670 に答える