我有一个这样的文件:
1633092723, TRANSFERCHECK: OK
1633092771, TRANSFERCHECK: OK
1633092777, TRANSFERCHECK: OK
1633092805, TRANSFERCHECK: OK
1633092811, TRANSFERCHECK: OK
1633092818, TRANSFERCHECK: OK
1633092823, TRANSFERCHECK: OK
1633092852, TRANSFERCHECK: OK
1633092857, TRANSFERCHECK: OK
1633092863, TRANSFERCHECK: OK
1633092891, TRANSFERCHECK: OK
1633092898, TRANSFERCHECK: OK
1633092904, TRANSFERCHECK: OK
1633092911, TRANSFERCHECK: OK
1633092938, TRANSFERCHECK: OK
1633092945, TRANSFERCHECK: OK
1633092953, TRANSFERCHECK: OK
1633092984, TRANSFERCHECK: OK
第一列是绝对时间戳。我怎样才能做一个awk 单行其中每个腹肌之间的平均时间。计算时间戳。它应用于预测过程的总持续时间。我已经这样做了,但这只是时间戳的时间,而不是从一个时间戳到下一个时间戳的持续时间。
cat myfetchlog.log | awk -F, '{sum+=$1} END {print strftime("%c",sum/NR)}'
多谢。我是 awk 初学者,希望改进。
答案1
差值平均值的计算公式为
{(2nd-1st) + (3rd-2nd) + ... + (nth-(n-1)th}/(NR-1)
Here 2nd-1st etc are difference between each consecutive times and there are NR-1 such difference
因此,它本质上删除了第 n 个(最后一项)和第 1 个(第一项)之间的所有项,因为它变成了(2nd-1st+3rd-2nd+..+nth-(n-1)th)/(NR-1)
。所以公式是(nth-1st)/(NR-1)
因此awk
代码是
awk 'NR==1 {first = $1} END {print ($1-first)/(NR-1)}' test
对于您的样本,它返回
15.3529