Como converter a data do formato “01 de outubro de 20:00” para “1 de outubro de 20:00” (espaço acolchoado)?

3

Aqui Oct 01 tem que ser impresso como Oct 1 ou seja, sem 0. Preciso de dois espaços entre outubro e 1, como Oct 1 .

    
por user3785519 06.10.2015 / 13:33

2 respostas

9

Com o GNU date :

date -d "Oct 01 20:00" "+%b %_d %k:%M"

Onde:

  • %b : nome do mês abreviado do idioma (por exemplo, Jan)
  • %_d : dia do mês (espaço acolchoado)
  • %k : hora (0..23)
  • %M : minuto (00..59)

Ouput:

Oct  1 20:00
    
por 06.10.2015 / 13:44
1

Se você quiser converter essas strings quando encontradas em algum texto, e somente quando elas seguirem esse padrão específico de Mmm dd HH:MM , em um sistema GNU ou FreeBSD (e derivados), você poderia fazer:

sed -E "s/($(locale abmon|tr ';' '|')) 0([0-9] [0-2][0-9]:[0-5][0-9])/  /g"

Ele leva a lista de abreviações de nome de mês da saída de locale abmon para que se adapte à preferência de localização do chamador. Use LC_ALL=C locale abmon para forçar as abreviações do nome do mês em inglês.

    
por 06.10.2015 / 13:59