awk를 사용하여 분과 초 합계

awk를 사용하여 분과 초 합계

awk를 사용하여 타이밍 값을 합산하는 방법은 무엇입니까?

다음과 같은 목록이 있습니다.

5:45
4:28
4:46
5:13
4:58
3:18
4:59
4:55
3:57
2:1
1:30
2:0
5:18
3:45
6:15

다음과 같은 출력을 원합니다.

h:mm:ss

답변1

노력하다

$ awk -F: '{a+=$1*60+$2}END{printf"%d:%02d:%02d",a/3600,a%3600/60,a%3600%60}' file
1:03:08
$
  • -F:- :필드 구분자로 설정
  • {a+=$1*60+$2}- 총 초, 즉 필드 1 * 60 + 필드 2.
  • END{printf"%d:%02d:%02d"- 파일 끝에 결과를 형식화된 형식으로 인쇄합니다(예: 0 앞에 분과 초 표시).
  • a/3600,- 시간은 초를 60으로 나눈 값입니다.
  • a%3600/60,- 분은 초의 나머지 부분을 60으로 나눈 다음 60으로 나눈 다음 60으로 나눈 값입니다.
  • a%3600%60}- 초 동안은 초의 나머지를 취하여 60으로 나누고, 다시 60으로 나누고, 나머지를 취하여 60으로 나눕니다.

관련 정보