我有这个文件:
mm1 17601901 17630939 -1.3
mm1 20802968 20820312 1.1
mm1 24612407 24612700 -1.1
mm1 34459762 34475733 1.8
我试图使用第二列作为参考,将第四列中的值相加,例如每100万个。
我正在使用这个代码karakfa告诉我:
awk '{a[$1 FS 1000000*int(($2-1)/1000000)+500000];sum+=$4} END{for(k in a) print k,a[k],sum}'
它输出了我:
mm1 20500000 2150.1
mm1 34500000 2150.1
mm1 36500000 2150.1
mm1 37500000 2150.1
但它汇总了文件中的所有列,而不仅仅是我创建的范围。
如果我改用++,它会计算该范围内的实例数 :
awk '{a[$1 FS 1000000*int(($2-1)/1000000)+500000];++} END{for(k in a) print k,a[k],sum}'
我做错了什么?
答案 0 :(得分:1)
您的sum
需要 数组(每个范围一个元素):
awk '{sum[$1 FS 1000000*int(($2-1)/1000000)+500000]+=$4} END{for(k in sum) print k,sum[k]}'