Alterar valor da data incluindo caractere "/"

1. Alterar valor da data incluindo caractere "/"

Lucas Rezende
lucasgrohl

(usa Ubuntu)

Enviado em 16/03/2011 - 14:18h

Pessoal,

Estou com um "problema" onde preciso incluir o caractere "/" entre os números da data.

A data é passada como argumento na chamada do script no formato 20110316, por exemplo. Eu preciso que ele fique 11/03/16 (o ano é sem os 2 primeiros dígitos mesmo).

Se alguém puder me ajudar...

Desde já obrigado! =)


  


2. Re: Alterar valor da data incluindo caractere "/"

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 16/03/2011 - 14:21h

Coloque assim e veja se dá certo:

VAR=11\/03\/16


3. Re: Alterar valor da data incluindo caractere "/"

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 16/03/2011 - 14:29h

Estou meio confuso:
20110316 não é 11/03/16, e sim 16/03/2011 certo?

De qualquer forma, voce pode usar tratamento de string em bash mesmo... no man do bash tem exemplos, tipo:
$(minha_var:0:4) # pega do caracter 0 ao caracter 4 da variavel "minha_var"

Se tiver dificuldade, poste aqui que a gente da uma mão :)


4. Re: Alterar valor da data incluindo caractere "/"

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 16/03/2011 - 14:36h

Oi!

Segue um exemplo:

MY_VAR="20110316"

MY_VAR_MODIFICADO=${MY_VAR:6:2}/${MY_VAR:4:2}/${MY_VAR:0:4}

"MY_VAR_MODIFICADO" vai receber "16/03/2011"

Espero ter ajudado!


5. Re: Alterar valor da data incluindo caractere "/"

Lucas Rezende
lucasgrohl

(usa Ubuntu)

Enviado em 16/03/2011 - 15:12h

Eu estou usando o ksh.

Quando faço o que sugeriu ele me retorna o seguinte erro:

comando: startdate=${data:3:4}
erro :ksh: startdate=${data:3:4}: 0403-011 The specified substitution is not valid for this command.

=(



6. Re: Alterar valor da data incluindo caractere "/"

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 16/03/2011 - 15:24h

Lucas:

Qual o valor da variavel "data" voce esta utilizando?

O seu comando pede para pegar a substring que começa no caracter posição 3 (quarto caracter da string) e pegar os proximos 4 caracteres. Se sua string nao tiver tamanho suficiente para isso, pode gerar um erro.

Da um "echo $data" e posta a resposta do comando aqui por favor.




7. Re: Alterar valor da data incluindo caractere "/"

Lucas Rezende
lucasgrohl

(usa Ubuntu)

Enviado em 16/03/2011 - 15:28h

data=20110316
echo $data -> 20110316

Foi erro no entendimento da sintaxe, mas mesmo tentando:

startdate=${data:2:2}

ele não coloca o "11" no startdate =/

ksh: startdate=${data:2:2}: 0403-011 The specified substitution is not valid for this command.



8. Re: Alterar valor da data incluindo caractere "/"

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 16/03/2011 - 15:32h

Vou fazer um teste num AIX aqui e, assim que tiver novidades, posto aqui.


9. Re: Alterar valor da data incluindo caractere "/"

Lucas Rezende
lucasgrohl

(usa Ubuntu)

Enviado em 16/03/2011 - 15:39h

Eu fiz isso:

startdate="`echo $data | cut -c3-4`/`echo $data | cut -c5-6`/`echo $data | cut -c7-8`"

e funcionou...

Será que é a melhor maneira?

=)


10. Re: Alterar valor da data incluindo caractere "/"

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 16/03/2011 - 15:45h

Cara, essa foi a primeira solução que me passou pela cabeça, só não postei pq:
1) é no mínimo dez vezes mais lento que substituição via sh
2) É gambiarra pura :P

Resolve o problema, mas vou continuar procurando um jeito de rodar no ksh.

Li um tuto e ele disse que versões antigas do ksh não tinham suporte a substituição de string, mas as atuis tem.


11. Vai de sed =)

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 16/03/2011 - 15:58h

echo 20110316 | sed -e 's/.\{2\}//' -e 's/\(..\)\(..\)\(..\)/\1\/\2\/\3/'
11/03/16


12. Re: Alterar valor da data incluindo caractere "/"

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 16/03/2011 - 16:02h

Bom, melhor um sed que 3 cut's :P

Desculpe, não achei como fazer isso usando ksh... versões mais novas dele aceitam na boa, mas as antigas são muito limitadas :(



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts