在用字段1分组后用awk获得字段2的平均值

时间:2014-01-03 14:07:07

标签: awk average

我有一个包含两个字段的文件,其中包含我根据字段1进行数字排序的数字。字段1中的数字范围为1到200000,字段2中的数字介于0和1之间。我想获得两者的平均值字段1和字段2分批(基于行)。

以下是指定4行批次时的示例输入输出:

1 0.12
1 0.34
2 0.45
2 0.40
50 0.60
301 0.12
899 0.13
1003 0.14
1300 0.56
1699 0.43
2100 0.25
2500 0.56

输出结果为:

1.5 0.327
563.25  0.247
1899.75 0.45

1 个答案:

答案 0 :(得分:4)

你走了:

awk -v n=4 '{s1 += $1; s2 += $2; if (++i % n == 0) { print s1/n, s2/n; s1=s2=0; } }'

说明:

  • 初始化n=4,批量大小
  • 收集总和:s1中第1列的总和,s2中的第2列
  • 将计数器i递增1(默认初始值为0,无需设置)
  • 如果i可以被n整除而没有余数,那么我们打印平均值,并重置和变量