首页 文章

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

提问于
浏览
1

我有一个包含两个字段的文件,其中包含我根据字段1进行数字排序的数字 . 字段1中的数字范围为1到200000,字段2中的数字介于0和1之间 . 我想获得字段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 回答

  • 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 整除而没有余数,那么我们打印平均值,并重置和变量

相关问题