Usando o awk:
$ echo '[10/04/16 01:02:03 BST]' | awk -F'[][/: ]' 'BEGIN{split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec",m,/ /)} {print m[$3+0],$2,$4,$5":"$6":"$7}'
Apr 10 16 01:02:03
Como funciona
-
-F'[][/: ]'
Isso define o separador de campo como% de
[
,]
,/
,:
ou em branco. -
BEGIN{split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec",m,/ /)}
Isso define uma matriz
m
que contém os nomes dos meses -
print m[$3+0],$2,$4,$5":"$6":"$7
Isto imprime a data no novo formato.
Entrada alternativa com barras invertidas
Se houver barras invertidas na entrada, podemos ignorá-las adicionando a barra invertida à nossa lista de separadores de campos:
$ echo '\[10\/04\/16 01:02:03 BST\]' | awk -F'[][/: \\]+' 'BEGIN{split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec",m,/ /)} {print m[$3+0],$2,$4,$5":"$6":"$7}'
Apr 10 16 01:02:03