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
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
.
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
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.
Tags date shell-script