如何使用绝对时间列计算该文件的平均时间值

如何使用绝对时间列计算该文件的平均时间值

我有一个这样的文件:

    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

相关内容