![절대 시간 열을 사용하여 이 파일의 평균 시간 값을 계산하는 방법](https://linux55.com/image/196464/%EC%A0%88%EB%8C%80%20%EC%8B%9C%EA%B0%84%20%EC%97%B4%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9D%B4%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%ED%8F%89%EA%B7%A0%20%EC%8B%9C%EA%B0%84%20%EA%B0%92%EC%9D%84%20%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
다음과 같은 파일이 있습니다.
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