我有一个包含数字列表的文件,每行一个数字。我想找到文件中非零数字的平均值。
例如:文件是:
0.0
1.0
2.0
3.0
0.0
0.0
我希望答案是2.0而不是1.0
我可以通过读取每一行,将其添加到一个总和,如果值不等于零则增加计数,以及最后计算总和/计数。
使用任何其他命令是否有更简单的方法?
答案 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}'