【问题标题】:Using awk to bin values in a list of numbers使用 awk 对数字列表中的值进行 bin 处理
【发布时间】:2013-06-12 04:03:16
【问题描述】:

我有一个包含许多列的大型数据文件,我想将(比如说)第三列合并到一个单独的文件中。

分箱是指:

我有一个数字列表说:

1
4
1
1
1
1

我想要一组(比如说)三个连续数字的平均值。

我的最终输出应该是

2
1

第一个条目是平均值

1
4
1

第二个条目是接下来三个数字的平均值,

1
1
1

我如何使用 awk 实现这一点?

【问题讨论】:

    标签: awk


    【解决方案1】:

    使用这个 awk 命令:

    awk '{sum+=$1} NR%3==0 {print sum/3; sum=0}' inFile
    

    【讨论】:

    • +1。还有awk '{sum=$1; getline; sum+=$1; getline; sum+=$1; print sum/3}'
    • 非常感谢@glennjackman 使用 getline 也是计算平均值的好方法。
    • +1 以获得良好的解决方案。不要为此使用 getline。想象一下,如果 OP 要求更改为平均 7 个数字而不是 3 个会产生什么影响。
    猜你喜欢
    • 2020-08-31
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2020-09-21
    • 2016-07-03
    • 2021-07-19
    • 2014-05-05
    • 2020-02-29
    相关资源
    最近更新 更多