首页 > 解决方案 > awk 列中选定值的总和

问题描述

我想对中的列中的选定值求和awk。第二列是时间。我想4th每秒从列中添加值。

输入:

1 0.1 2 1 3
2 0.3 2 2 3
4 0.6 2 3 3
2 1.1 2 4 3
5 1.3 2 5 3
6 2.2 2 6 3
7 2.7 2 7 3
8 3.6 2 8 3
9 3.9 2 1 3
10 4.1 2 1 3

预期输出(我们有5几秒钟):

6
9
13
9
1

编辑:

这是我的code,但我不知道它如何动态工作。

awk '$2>x && $2<=y (sum+=$4) END {print sum}' filename

where x- 开始时间,y- 结束时间。它仅适用于静态值,这意味着现在我只能在选定的一秒内获得结果。

标签: linuxawk

解决方案


试试下面的awk程序

BEGIN {
    total = 0
    secondEnd = 1
}
{
    if($2 < secondEnd) {
        total += $4
        next
    }

    while($2 > secondEnd) {
        print(total)
        total = 0
        secondEnd++
    }
    total = $4
}
END {
    print(total)
}

推荐阅读