Pessoal, Primeiro queria agradecer mesmo aos colegas que já postaram sugestões ...
Vou usar as sugestões para aperfeiçoar o script. Acho que identifiquei a raiz principal do problema.... O shell parece interpretar números como "09" como octal, então tentar somar 10 + 09 vai dar erro, pq ta somando decimal com octal minha solução, meio gambiarra foi: no arquivo eu tenho (hora:minuto): 10:09 12:15 5:03 cat tempo | sed 's/:0/:/g' >> tempo_ok e ficou: 10:9 12:15 5:3 agora dá pra somar ... Não é a solução mais elegante, mas parece resolver o problema !!! Muito obrigado mesmo. Abdala [email protected] escreveu: > > > 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 > >
