Bash:从文件

时间:2015-09-21 13:44:01

标签: bash unix

我有一个包含数字列表的文件,每行一个数字。我想找到文件中非零数字的平均值。

例如:文件是:

0.0
1.0
2.0
3.0
0.0
0.0

我希望答案是2.0而不是1.0

我可以通过读取每一行,将其添加到一个总和,如果值不等于零则增加计数,以及最后计算总和/计数。

使用任何其他命令是否有更简单的方法?

2 个答案:

答案 0 :(得分:5)

这个awk单线程进行过滤和平均计算:

awk '$0{s+=$0;c++}END{printf "%.1f\n",c?s/c:0}' file

输出:

2.0

答案 1 :(得分:0)

试试这个:

grep -v '0.0' file.txt | awk '{sum += $1} END {print sum/NR}'