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으로 나눕니다.