Vamos usar o seu loop já existente (que eu realmente não vi, mas que parece fazer o seu trabalho):
for i in $(awk '{print $1}' filedate.txt); do date -d "$i" +%d/%m/%Y; done
Depois, dobre minha resposta a essa outra pergunta , com pequenas modificações:
for i in $(awk '{print $1}' filedate.txt); do date -d "$i" +%d/%m/%Y; done |
paste - <( cut -d ' ' -f 2- filedate.txt )
Resultado:
01/01/2007 10.2317 79.1638 6.0 26.7 20.9 0.8 14.0 98.6
02/01/2007 10.2317 79.1638 5.6 26.5 20.8 1.9 13.6 98.0
03/01/2007 10.2317 79.1638 7.5 27.7 20.8 0.1 15.8 96.4
04/01/2007 10.2317 79.1638 8.1 26.0 19.6 0.0 15.5 94.1
Mais curto, sem o loop:
date -f <( cut -d ' ' -f 1 filedate.txt ) +"%d/%m/%Y" |
paste - <( cut -d ' ' -f 2- filedate.txt )
Sem o pipe:
paste <( date -f <( cut -d ' ' -f 1 filedate.txt ) +"%d/%m/%Y" ) \
<( cut -d ' ' -f 2- filedate.txt )
Todos esses exemplos obviamente requerem bash
ou ksh
ou qualquer outro shell que entenda substituições de processos. O% GNUdate
também é necessário.
Veja minha resposta a essa outra pergunta para uma explicação de como isso funciona.