【发布时间】:2017-01-31 18:23:37
【问题描述】:
我有一个 1800 行的文件,看起来像这样
600.76
600.66
700.44
566.66
Ect..
我制作了一个 bash 脚本来计算平均值。
现在我首先创建了一个变量来计算总列行数,例如:
Lines="$(awk 'END{print NR}' file.txt)"
然后是该列总和的另一个变量,如下所示:
Sum="$(awk '{s+1=$1}END {print s}' file.txt)"
最后我找到了这样的平均值:
Echo "scale=2 ; $Sum / $Lines" | bc
启用调试后返回:
+echo 'scale=2 ; 1.72161e+06 / 1800'
(Standard_1): syntax error
我现在意识到 bc 不做科学记数法,但我该如何解决这个问题。
我可以通过将小数限制为 2 或 3 位来简写小数。
【问题讨论】:
-
为什么不直接使用
awk? -
awk '{sum+=$1}END{print sum/NR}'怎么样? -
@twallberg awk 在答案变得太大后返回科学记数法。原来的问题是什么
-
@theloosegoos 也许
awk '{sum+=$1}END{printf "%f\n", sum/NR}会提供更好的结果。awk有一个printf实现,它模仿了很多(但不是全部)C 版本的功能...... -
@theloosegoos 输入文件中的任何行都是科学计数法吗?