다음과 같은 파일이 있습니다.
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