我有一个包含数字列表的文件,如下所示
4.90889
4.92681
4.99236
5.29358
5.3115
5.37706
5.9354
5.95332
6.01888
我需要用第一个数字减去第三个数字,然后递归地处理下一个 3 行块,保存结果并求平均值。我知道如何用 awk 求平均值,但我在第一次操作时就迷失了。
使用上面的数字将是:
4.99236 - 4.90889 = 0.08347
5.37706 - 5.29358 = 0.08348
6.01888 - 5.9354 = 0.08348
(0.08347 + 0.08348 + 0.08348)/3 = 0,0834766666667
答案1
通过一些模运算:
awk '
FNR%3 == 1 {last = $0}
FNR%3 == 0 {sum += $0 - last; n++}
END {print (n > 0 ? sum/n : 0)}
' file