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

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

Re: [shell-script] Conversão de Bases em Bash


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Conversão de Bases em Bash
Date: Thu, 12 Jul 2007 13:41:15 -0300

para datas mm/dd/aaaa é facil

$ date -d '06/20/1980' +'%c -> %s'
Fri 20 Jun 1980 12:00:00 AM BRT -> 330318000

LC_ALL=pt_BR date -d '06/20/1980' +'%c -> %s'
Sex 20 Jun 1980 00:00:00 BRT -> 330318000

;-)

On 7/12/07, Michel I. Moreira <address@hidden> wrote:
>
>   Bom dia senhores...
>
> Achei muito interressante isso, e aproveitando o assunto, estou montando
> um script que vai ler um arquivo de log, onde preciso pegar o periodo
> entre duas data. O problema é que no log é gravado em unix timestamp e
> eu tenho que passa as datas convencionais para ele.
>
> Eu consegui fazer o inverso do que eu preciso, apos algumas googladas.
>
> Exemplos:
> $ awk 'BEGIN {print strftime("%d/%m/%Y",1158857787)}'
> 21/09/2006
>
> ou
>
> $ date -d '1/1/1970 + 1158857787 seconds' '+%d/%m/%Y'
> 21/09/2006
>
> Alguem tem alguma ideia de como poderia fazer o contrario disso, ou
> seja, entrar com a data em formato dd/mm/yyyy e sair com timestamp
>
> Desde ja muito obrigado
>
> Michel
>
> Tiago Barcellos Peczenyj escreveu:
>
>
> > Muito interessante esta dica que vi no "Advanced Bash-Scripting Guide"
> > do Mendel Cooper [ http://tldp.org/guides.html
> > <http://tldp.org/guides.html> ] e, inclusive,
> > publiquei no meu blog com um adendo sobre fazer o mesmo usando o bc
> > que todo mundo deve estar careca de saber.
> >
> > Com Bash, podemos representar números nas mais variadas bases, desde 2
> > até 64 usando o operador # como no exemplo abaixo:
> >
> > X=101
> > for BASE in 2 8 10 16 32 64 ; do
> > echo "$X na base $BASE eh $(( ${BASE}#${X} ))" # conversao pra decimal
> > done
> > 101 na base 2 eh 5
> > 101 na base 8 eh 65
> > 101 na base 10 eh 101
> > 101 na base 16 eh 257
> > 101 na base 32 eh 1025
> > 101 na base 64 eh 4097
> >
> > echo $((16#FF)) $((32#V))
> > 255 31
> >
> > echo $((64#z)) $((64#Z)) $((64#@)) $((64#_)) # atenção nos 2 ultimos!
> > 35 61 62 63
> >
> > Além de ser possível usar a notação de octal e hexa do C (iniciar a
> > expressão com 0 e 0x, respectivamente)
> >
> > echo $((10)) $(( 010 )) $(( 0x10 )) $((10 + 010 + 0x10))
> > 10 8 16 34
> >
> > --
> > Tiago B Peczenyj
> > Linux User #405772
> >
> > http://peczenyj.blogspot.com/ <http://peczenyj.blogspot.com/>
> >
> >
>
>  
>



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/


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



reply via email to

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