我有一个名为bt.B.1.log的文件,如下所示:
onActivityResult
以及以秒为单位的40个时间记录(点代表无用的行)。 我应该从文件中提取那些时间,并在不使用中间文件的情况下计算/打印平均值到.dat文件(t1avg.dat)。 我已经能够使用中间文件这样做了:
.
.
.
Time in seconds = 260.37
.
.
.
Time in seconds = 260.04
.
.
.
因此,方法是以某种方式将第一个awk命令中出现的正则表达式作为第二个命令中的参数传递,告诉awk计算正则表达式结果行的总和,所有这些都是从单个文件中读取的( bt.B.1.log)并写入t1avg.dat(禁止创建t1.dat)。到目前为止,我已经达到了以下代码,它给出了错误的输出:
awk '/Time in seconds/ {print $5}' bt.B.1.log > t1.dat
awk '{sum+=$0} END {print sum/NR}' t1.dat > t1avg.dat
有什么想法吗?
答案 0 :(得分:2)
{% if title == "Home" %}
<li class="active">
{% else %}
<li>
{% endif %}
awk '/Time in seconds/ {s+=$5;c++} END{print s/c}' bt.B.1.log >t1avg.dat
是时间的总和,s
是计数。因此,c
是平均值。
答案 1 :(得分:1)
你也可以分开=
:
$ echo "$e"
.
.
.
Time in seconds = 260.37
.
.
.
Time in seconds = 260.04
.
$ echo "$e" | awk -F= '/Time in seconds/ {s+=$2; c++} END{print s/c}'
260.205