Somando minutos e segundos com o awk

1

Como posso somar valores de tempo com o awk?

Eu tenho uma lista como esta:

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

e gostaria de uma saída como esta:

h:mm:ss
    
por nath 25.10.2018 / 12:40

1 resposta

4

Tente

$ awk -F: '{a+=$1*60+$2}END{printf"%d:%02d:%02d",a/3600,a%3600/60,a%3600%60}' file
1:03:08
$
  • -F: - defina : como delimitador de campo
  • {a+=$1*60+$2} - totaliza o número de segundos, sendo campo 1 * 60 + campo 2.
  • END{printf"%d:%02d:%02d" - no final do arquivo, imprime os resultados de maneira formatada, ou seja, zeros à esquerda em minutos e segundos
  • a/3600, - horas são segundos divididos por 60 divididos por 60
  • a%3600/60, - minutos é o restante dos segundos dividido por 60 dividido por 60, depois dividido por 60
  • a%3600%60} - por segundos, tomar o restante dos segundos dividido por 60 dividido por 60 e, em seguida, tomar o restante do que dividido por 60
por 25.10.2018 / 12:49