Aí vai uma solução com awk totalizando em horas e minutos

[r...@guitar 3X]# cat hm.txt
1:09
2:54
10:07
3:40
0:28
3:49
[r...@guitar 3X]# cat awk.cmd
BEGIN{H=0;M=0}
{H+=$1;M+=$2}
END{min=M%60;hora=int(M/60);printf("%d horas e %d minutos\n", H+hora ,
min)}
[r...@guitar 3X]# awk -F":" -f awk.cmd hm.txt
22 horas e 7 minutos



On Fri, 2009-07-31 at 09:49 -0300, [email protected] wrote:
>   
> Saudações aos colegas da lista.
> 
> Bom, o problema parece bem simples, mas como sou iniciante, já
> quebrei 
> a cabeça, ja fiz de varias formas,
> e não tá dando certo.
> 
> Bom, tenho um arquivo (tempo.txt) com varias linhas no formato 
> hora:minuto ...
> 
> $ cat tempo
> 0:48
> 1:05
> 1:10
> 1:10
> 1:10
> 1:17
> 1:19
> 1:23
> ... (sao 71 valores)
> 
> Estou precisando calcular o valor total em minutos :
> 
> ((hora * 60) + minutos))
> 
> de cada linha ....
> 
> Bom a maneira que tentei fazer foi a seguinte:
> 
> estou usando um cut para separar a hora dos minutos e jogar cada
> valor 
> em um arquivo separado:
> 
> cat tempo | cut -f1 -d: > tempo_hora
> 
> cat tempo | cut -f2 -d: > tempo_minuto
> 
> em seguida conto o numero de linhas do arquivo tempo:
> 
> LINHAS=`cat tempo | wc -l`
> 
> para poder fazer um for ....
> 
> for i in `seq $LINHAS`
> do
> HORA=`awk NR==$i tempo_hora`
> MINUTO=`awk NR==$i tempo_minuto`
> TEMPO=$[(HORA*60)+MINUTO]
> echo $TEMPO >> total_minutos
> done
> 
> Segue o script :
> 
> +++++++++++++++++++++++++++++++++++++
> 
> #!/bin/bash
> 
> cat tempo | cut -f1 -d: > tempo_hora
> 
> cat tempo | cut -f2 -d: > tempo_minuto
> 
> LINHAS=`cat tempo | wc -l`
> 
> rm -rf total_minutos
> 
> for i in `seq $LINHAS`
> do
> HORA=`awk NR==$i tempo_hora`
> MINUTO=`awk NR==$i tempo_minuto`
> TEMPO=$[(HORA*60)+MINUTO]
> echo $TEMPO >> total_minutos
> done
> 
> +++++++++++++++++++++++++++++++++++++
> 
> Ele só processa até a linha 56, e dá o erro ....
> 
> line 15: 09: valor muito grande para a base (error token is "09")
> 
> so que na linha 56 do arquivo principal "tempo" tem o valor : 1:06:29
> e na 57 tem: 1:09:17
> 
> ou seja, aparentemente valores iguais aos outros ....
> 
> Pode ser um erro básico, mas ja procurei bastante e não to entendendo
> o 
> que está errado.
> 
> Muito obrigado a qualquer colega que possa dar uma ajuda;
> 
> Emmanuel Abdala
> Anápolis - GO
> 
> 
> 
> 
> 



------------------------------------

---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: [email protected]
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    [email protected]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a