Uma possível resposta usando awk, assumindo que o arquivo de entrada é input-file.txt e o arquivo de saída é output-file.txt:
awk -F ',' '{printf("%s,%s,",$1,$2);system("date -d "$3" +%Y-%m-%d");}' input-file.txt > output-file.txt
Arquivo de entrada: Contém 3 colunas com a terceira coluna como data no formato DD-MMM-YYYY
dados de amostra:
1232,abdc, 02-Jan-2014
4534,kdafh, 20-Feb-2014
364,asjhdk, 11-Jul-2012
saída obrigatória:
1232,abdc, 2014-01-02
4534,kdafh, 2014-02-20
364,asjhdk, 2012-07-11
usando a data da função: date -d 20-DEC-2014 +%Y-%m-%d
usou o comando awk dá erro
Existe alguma outra maneira?
Uma possível resposta usando awk, assumindo que o arquivo de entrada é input-file.txt e o arquivo de saída é output-file.txt:
awk -F ',' '{printf("%s,%s,",$1,$2);system("date -d "$3" +%Y-%m-%d");}' input-file.txt > output-file.txt
Supondo que você insere 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 & gt ;, ele será
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
Tags date