如何匹配两行并减去它们

时间:2013-07-05 06:11:03

标签: 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.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

3 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

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

答案 1 :(得分:2)

GNU代码

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

答案 2 :(得分:2)

awk '{if(a[$2]){print $1-a[$2]}else{a[$2]=$1;}}' your_file