用于计算数据文件中数字列表平均值的脚本

时间:2013-03-28 12:12:31

标签: bash sed awk

文件data.txt包含以下内容:

1.00 1.23 54.4 213.2 3.4

脚本的输出应该是:

ave: 54.646

首选一些简单的脚本。

3 个答案:

答案 0 :(得分:62)

这是一种方法:

$ awk '{s+=$1}END{print "ave:",s/NR}' RS=" " file
ave: 54.646

答案 1 :(得分:22)

另一种选择是使用jq

$ seq 100|jq -s add/length
50.5

-s--slurp)在将每一行解析为JSON之后为输入行创建一个数组,或者在这种情况下为数字。

或者OP的情况:

tr \  \\n<file|jq -s add/length|sed s/^/ave:\ /

答案 2 :(得分:5)

perl -lane '$a+=$_ for(@F);print "ave: ".$a/scalar(@F)' file

如果你有多行而你只需要一个平均值:

perl -lane '$a+=$_ for(@F);$f+=scalar(@F);END{print "ave: ".$a/$f}' file