我有一个文件,其中包含每行一个数字的数字列表.我想找到文件中非零数字的平均值.
例如:文件是:
0.0
1.0
2.0
3.0
0.0
0.0
Run Code Online (Sandbox Code Playgroud)
我希望答案是2.0而不是1.0
我可以通过读取每一行,将其添加到一个总和,如果值不等于零则增加计数,并在最后计算总和/计数.
使用任何其他命令有更简单的方法吗?
这个awk单线程进行过滤和平均计算:
awk '$0{s+=$0;c++}END{printf "%.1f\n",c?s/c:0}' file
Run Code Online (Sandbox Code Playgroud)
它输出:
2.0
Run Code Online (Sandbox Code Playgroud)