絶対時間列を使用してこのファイルの平均時間値を計算する方法

絶対時間列を使用してこのファイルの平均時間値を計算する方法

次のファイルがあります。

    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 

最初の列は絶対タイムスタンプです。どうやって作れますか?奇妙な一行各腹筋間の平均時間。タイムスタンプを計算します。プロセスの全期間を予測するために使用する必要があります。これを行いましたが、タイムスタンプの時間に過ぎず、あるタイムスタンプから次のタイムスタンプまでの期間ではありません。

      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番目(最後の項目)と最初の(最初の項目)の間のすべての項目を削除します(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

おすすめ記事