Formato de mudança de data no unix

3

Estou passando a data como variável na função. Eu quero converter essa data em formato diferente. Exemplo

DT=2015-12-08

Deseja converter DT em 08-dec-2015 no Unix.

    
por user147296 13.12.2015 / 19:05

2 respostas

2

Assumindo data GNU (ou seja, Linux não embutido):

$ LC_TIME=C date --date=2015-12-08 +%d-%b-%Y
08-Dec-2015
    
por 13.12.2015 / 19:28
1

Se você estiver em um Linux não incorporado, ou mais geralmente em um sistema com data GNU, você poderá usá-lo para compor uma data arbitrária.

LC_ALL=C date -d "$DT" +%d-%b-%Y | tr A-Z a-z

Se você não tem data GNU (ou mesmo que você faça isso), você pode fazer isso em shell puro.

case $DT in
  *-01-*|*-1-*) month=jan;;
  *-02-*|*-2-*) month=feb;;
  *-03-*|*-3-*) month=mar;;
  *-04-*|*-4-*) month=apr;;
  *-05-*|*-5-*) month=may;;
  *-06-*|*-6-*) month=jun;;
  *-07-*|*-7-*) month=jul;;
  *-08-*|*-8-*) month=aug;;
  *-09-*|*-9-*) month=sep;;
  *-10-*) month=oct;;
  *-11-*) month=nov;;
  *-12-*) month=dec;;
esac
echo "${DT##*-}-$month-${DT%%-*}"
    
por 14.12.2015 / 00:49