Se você tiver a implementação GNU de awk
ou mawk
1.3.4-20121129 ou mais recente , tente:
$ awk '
{
split($2,a,"/");
split($3,b,":");
split(strftime("%m/%d/%Y %H:%M:%S",mktime(a[3]" "a[1]" "a[2]" "b[1]" "b[2]" "b[3])),c);
$2 = c[1];
$3 = c[2];
print;
}
' file
AA 09/07/2014 02:30:38 PM AA0000011111 08 Y A Jane, Doe
AA 09/07/2014 11:30:31 AM AA0000011112 09 Y B John, Doe
AA 09/07/2014 07:30:45 AM AA0000011113 20 Y A Jane, Doe A
AA 09/08/2014 11:01:14 AM AA0000011114 30 Y A John, Doe A
AA 09/08/2014 02:30:46 PM 7BD1111111115 40 Y B Jane, Doe A
AA 09/08/2014 02:31:00 PM AA0000011116 50 Y A John, Doe A
AA 09/08/2014 07:30:53 AM AA0000011117 60 Y B Jane, Doe
AA 09/09/2014 07:30:27 AM AA0000011118 70 Y A John, Doe A
AA 09/09/2014 07:30:41 AM AA0000011119 80 Y B Jane, Doe
AA 09/09/2014 07:30:55 AM AA0000011110 90 Y A John, Doe
AA 09/14/2014 07:30:55 AM AA0000011111 80 Y A Jane, Doe A
AA 11/11/2014 07:30:55 AM AA0000011112 80 Y A John, Doe A
Explicação
- dividimos a string de data, salve no array
a
- dividimos a string de tempo, salve no array
b
-
Na próxima parte, usamos a função
strftime
emktime
para obter o resultado desejado.-
mktime(a[3]" "a[1]" "a[2]" "b[1]" "b[2]" "b[3])
obtenha a sequência no formatoYear Month Day Hour Min Sec
para converter o tempo em segundos desde a época. -
strftime
obtenha o formato"%m/%d/%Y %H:%M:%S"
e o tempo processado pormktime
crie o resultado desejado para nós.
-
-
Dividimos o resultado, salvamos na matriz
c
, atribuímos de volta a$2
,$3
e imprimimos a saída.
OBSERVAÇÃO