Text-Processing

如何使用絕對時間列計算此文件的平均時間值

  • October 4, 2021

我有一個這樣的文件:

   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 初學者,想改進。

平均差的公式是

{(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

引用自:https://unix.stackexchange.com/questions/671432