Awk 如何匹配两行并减去它们

Awk 如何匹配两行并减去它们,awk,Awk,我有一个两列的文件,我想匹配第二列和第二列中的每个值,如果它们匹配,从第一列的两个匹配值中减去第一列 7.788244 0 7.800744 1 7.813244 2 7.825744 3 7.838244 4 7.850744 5 7.863244 6 7.875744 7 7.888244 8 7.900744 9 7.913244 10 7.925744 11 7.938244 12 7.950744 13 7.963244 14 7.975744 15 7.801751 0 7.8142

我有一个两列的文件,我想匹配第二列和第二列中的每个值,如果它们匹配,从第一列的两个匹配值中减去第一列

7.788244 0
7.800744 1
7.813244 2
7.825744 3
7.838244 4
7.850744 5
7.863244 6
7.875744 7
7.888244 8
7.900744 9
7.913244 10
7.925744 11
7.938244 12
7.950744 13
7.963244 14
7.975744 15
7.801751 0
7.814251 1
7.826751 2
7.839251 3
7.851751 4
7.864251 5
7.876751 6
7.889251 7
7.901751 8
7.914251 9
7.926751 10
7.939251 11
7.951751 12
7.964251 13
7.976751 14
7.989251 15
范例

0.013507
0.013507
0.013507

您可以执行以下操作:

awk '{a[$2]?b[++i]=$1-a[$2]:a[$2]=$1}END{for(;x<length(b);) print b[++x]}' inputFile
awk'{a[$2]?b[++i]=$1-a[$2]:a[$2]=$1}END{for(;xGNU代码:

awk 'a[$2]?a[$2]-=$1:a[$2]+=$1 {next} END {for (i in a) print -a[i]}' file
awk '{if(a[$2]){print $1-a[$2]}else{a[$2]=$1;}}' your_file