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/>
>
>