shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Calculo em Centesimos


From: Christian Lyra
Subject: Re: [shell-script] Calculo em Centesimos
Date: Thu, 8 Dec 2011 20:24:24 -0200

Uma dica: use o comando date para transformar o horario em um timestamp
(segundos desde epoch). Ex:

$ date +"%s" -d "2011-12-07 14:30:00"

P.s.: o gnu date faz isso. Nao sei se outros tb o fazem.

On Thursday, December 8, 2011, Julio C. Neves <address@hidden> wrote:
> Fala Willian,
> fiz metade, mas se vc entender, pode fazer o resto. Veja:
>
> # Horas dos inícios
> $ HI=$(cut -f1 -d: Arq)
> # Minutos dos inícios
> $ MI=$(cut -f2 -d: Arq | xargs -n1 echo '* 3600 +')
> # Segundos dos inícios
> $ SI=$(cut -f3 -d: $Arq | cut -f1 -d' ' | xargs -n1 echo '* 60 +')
> # Das 3 linhas acima, resultou:
> $ echo "$HI"
> 14
> 14
> 14
> 14
> 14
> 14
> 14
> 14
> 14
> 14
> $ echo "$MI"
> * 3600 + 54
> * 3600 + 54
> * 3600 + 54
> * 3600 + 55
> * 3600 + 55
> * 3600 + 55
> * 3600 + 56
> * 3600 + 56
> * 3600 + 56
> * 3600 + 57
> $ echo "$SI"
> * 60 + 30
> * 60 + 32
> * 60 + 54
> * 60 + 7
> * 60 + 38
> * 60 + 53
> * 60 + 28
> * 60 + 30
> * 60 + 34
> * 60 + 20
>
> # Posso juntar as três variáveis com um paste, veja:
>
> $ paste -d' ' <(echo "$HI") <(echo "$MI") <(echo "$SI")
> 14 * 3600 + 54 * 60 + 30
> 14 * 3600 + 54 * 60 + 32
> 14 * 3600 + 54 * 60 + 54
> 14 * 3600 + 55 * 60 + 7
> 14 * 3600 + 55 * 60 + 38
> 14 * 3600 + 55 * 60 + 53
> 14 * 3600 + 56 * 60 + 28
> 14 * 3600 + 56 * 60 + 30
> 14 * 3600 + 56 * 60 + 34
> 14 * 3600 + 57 * 60 + 20
>
> # Epa, formei uma conta. Vamos calcular isso e guardar em TotSegIni:
>
> $ TotSegIni=$(paste -d' ' <(echo "$HI") <(echo "$MI") <(echo "$SI") | bc)
> $ echo "$TotSegIni
> 53670
> 53672
> 53694
> 53707
> 53738
> 53753
> 53788
> 53790
> 53794
> 53840
>
> Pronto! Já reduzi todos os horários dos inícios em segundos.
>
> Já fiz o inicio, agora é sua vez de calcular TotSegFin com os horários
> finais e para finalizar fazer:
>
> $ paste -d- <(echo "$TotSegIni") <(echo "$TotSegFin") | bc
>
> Aí vc terá as diferenças (em segundos) entre os horários de início e de
> fim, tudo feito em 9 linhas.
>
> Abcs,
> Julio
> *Já foi lançado "Bombando o
> Shell<
http://www.brasport.com.br/index.php?dispatch=products.view&product_id=666>
> ". *
>  *Show **de interfaces gráficas sob Shell!*
> *
> *
>
>
>
> Em 8 de dezembro de 2011 17:10, William Alves dos Santos <
> address@hidden> escreveu:
>
>> **
>>
>>
>> Caros,
>>
>> Ficou dessa forma, desprezei os centesimos para simplicar as coisas, e o
>> tratamento realmente será necessário para descobrir tempos superiores a 1
>> segundo.
>>
>> Arquivo
>>
>> 14:54:30 14:54:31
>> 14:54:32 14:54:33
>> 14:54:54 14:54:55
>> 14:55:7 14:55:8
>> 14:55:38 14:55:39
>> 14:55:53 14:55:54
>> 14:56:28 14:56:31
>> 14:56:30 14:56:33
>> 14:56:34 14:56:35
>> 14:57:20 14:57:21
>>
>> cat log.tmp | tr ':' ' ' | while read LIN; do
>> hi=`echo $LIN | awk '{print $1}'`
>> mi=`echo $LIN | awk '{print $2}'`
>> si=`echo $LIN | awk '{print $3}'`
>> hsi=`expr ${hi} \* 3600`
>> msi=`expr ${mi} \* 60`
>> ssi=`echo $si`
>> ini=`echo $hsi $msi $ssi | tr ' ' '+' | bc`
>> hf=`echo $LIN | awk '{print $4}'`
>> mf=`echo $LIN | awk '{print $5}'`
>> sf=`echo $LIN | awk '{print $6}'`
>> hsf=`expr ${hf} \* 3600`
>> msf=`expr ${mf} \* 60`
>> ssf=`echo $sf`
>> fim=`echo $hsf $msf $ssf | tr ' ' '+' | bc`
>> echo $fim $ini | tr ' ' '-' | bc
>> done
>>
>> Abraços
>>
>> *William Alves dos Santos*
>> **Cel.: +55 (11) 6835 8172
>>
>> <address@hidden> <http://www.proatividadeweb.com>
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>
>>
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> 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: address@hidden
> ---------------------------------------------------------------------
> 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
>
>
>

-- 
Christian Lyra
PoP-PR/RNP


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]