Como converter o formato da data no arquivo


0

Arquivo de entrada: Contém 3 colunas com a terceira coluna e a data no DD-MMM-YYYYformato de
dados de amostra:

1232,abdc, 02-Jan-2014
4534,kdafh, 20-Feb-2014
364,asjhdk, 11-Jul-2012

saída necessária:

1232,abdc, 2014-01-02
4534,kdafh, 2014-02-20
364,asjhdk, 2012-07-11

usando a função date: date -d 20-DEC-2014 +%Y-%m-%d
o comando awk usado dá erro
Existe outra maneira?


3
Como devemos ajudá-lo se você não nos informar o comando exato que usou (e a mensagem de erro)?
Hauke ​​Laging

Respostas:


2

Uma resposta possível usando o awk, assumindo que o arquivo de entrada seja input-file.txt e o arquivo de saída seja output-file.txt:

awk -F ',' '{printf("%s,%s,",$1,$2);system("date -d "$3" +%Y-%m-%d");}' input-file.txt > output-file.txt

O arquivo de entrada possui um registro de data e hora no campo de data, para que o código about dê erro. Portanto, o arquivo de entrada foi alterado conforme abaixo: 1232, abdc, 02-jan-2014 18:01:37 </br> 4534, kdafh, 20-fev-2014 07:17:19 </br> 364, asjhdk, 11- Jul-2012 23:20:30 </br>
user_tmo

0

Supondo que você inseriu texto é assim:

1232,abdc, 02-Jan-2014 18:01:37</br> 
4534,kdafh, 20-Feb-2014 07:17:19</br>
364,asjhdk, 11-Jul-2012 23:20:30</br>

minha resposta seria:

cat input-file.txt | sed 's[</br>[[g' | awk -F ',' '{printf("%s,%s,",$1,$2);system("date -d \""$3" "$4"\" +\"%Y-%m-%d %H:%M:%S\"");}' > output-file.txt

E se os registros estiverem em uma única linha (nenhuma nova linha no arquivo de entrada após o </br>, seria

cat input-file.txt | sed 's[</br>[\n[g' | awk -F ',' '{printf("%s,%s,",$1,$2);system("date -d \""$3" "$4"\" +\"%Y-%m-%d %H:%M:%S\"");}' > output-file.txt
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.