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