Como obter o mês em maiúsculas

0

Eu tenho o valor do mês de dois dígitos (01 a 12). Eu preciso obter a abreviação de três letras mês (como JAN, FEB, MAR etc.) Eu sou capaz de obtê-lo em caso misto usando o seguinte comando:

date -d "20170711" | date +"%b"

A saída é "Jul" Eu quero que seja "JUL". Existe uma opção de data padrão para obtê-lo?

    
por AlluSingh 12.07.2017 / 03:31

5 respostas

0

Como você está lidando com uma informação bastante estática (exceto mais eventos intercalary ), basta usar nos comandos shell:

function capdate() {
  case "$1" in
  (01) printf "JAN";;
  (02) printf "FEB";;
  (03) printf "MAR";;
  (04) printf "APR";;
  (05) printf "MAY";;
  (06) printf "JUN";;
  (07) printf "JUL";;
  (08) printf "AUG";;
  (09) printf "SEP";;
  (10) printf "OCT";;
  (11) printf "NOV";;
  (12) printf "DEC";;
  (*)  printf "invalid"; return 1;;
  esac
}

Execução da amostra:

$ m=$(capdate 01); echo $?, $m
0, JAN
$ m=$(capdate Caesar); echo $?, $m
1, invalid

Ajuste o texto se sua localidade tiver diferentes nomes date +%b .

    
por 12.07.2017 / 04:26
12
^      use upper case if possible

Resultado:

$ date +%^b
JUL

Bônus: como recebi esta resposta:

data do homem Digite / case Digite n

    
por 12.07.2017 / 04:23
2

Você pode enviar para tr(1) :

date -d "20170711" +"%b" | tr '[:lower:]' '[:upper:]'
    
por 12.07.2017 / 03:34
1

date -d '20170711' '+%^b' e date -d '20170711' '+%b' | tr '[:lower:]' '[:upper:]' funcionam bem.

Você também pode fazer isso usando a expansão de parâmetros:

$ month=$(date -d '20170711' '+%b')
$ echo "${month^^}"
JUL
    
por 26.07.2017 / 07:01
0

Outra solução, usando o awk

date -d "20170711" | date +"%b" | awk '{print toupper($0)}'
    
por 12.07.2017 / 03:39

Tags