Se você tiver acesso ao GNU date
, você pode fazer:
$ ( date="1899-12-31"; printf 'DATE\tDATA\n';
tail -n+2 file |
while read line; do
date="$(date -d "$date + 1 day" +%F)"
printf '%s\t%s\n' "$date" "$line"
done; ) > newfile
Explicação
-
date="1899-12-31"
: defina a variável$date
para a data de início menos um dia. -
printf 'DATE\tDATA\n';
: imprime os cabeçalhos das colunas. -
tail -n+2 file |
: imprime tudo, exceto a primeira linha (o cabeçalho) do seu arquivo, e passa para o loopwhile
. -
while read line; do ... ; done
: processa cada linha de entrada, salvando-a como$line
. -
date="$(date -d "$date + 1 day" +%F)"
: adicione um dia ao valor de$date
. -
printf '%s\t%s\n' "$date" "$line"
: imprime as variáveis$date
e$line
atuais. -
( ... ) > newfile
: isso faz com que todo o comando seja executado em um subshell para que você possa capturar a saída do primeiroprintf
e o loop e redirecioná-lo paranewfile
.