Supondo que qualquer ano de dois dígitos entre 70 e 99 ocorra no século passado:
sed 's/[7-9][0-9];$/19&/; s/[0-6][0-9];$/20&/' file
Ou deixe alguém decidir:
perl -MTime::Piece -F';' -ane '
$F[-2] = Time::Piece->strptime($F[-2], "%d.%m.%y")->strftime("%d.%m.%Y");
print join(";", @F)
' file
Opções
-MTime::Piece
importa o padrão Perl Relógio módulo
-F';' -a
as opções dividem cada linha por ponto e vírgula e armazenam o resultado no @F
matriz
-n
faz um loop sobre as linhas nos dados de entrada (stdin ou arquivos) sem imprimir automaticamente cada linha.
Código
$F[-2]
é o 2º último campo (que é onde a data estava em sua pergunta original).
- Eu uso o
strptime
e strftime
métodos para analisar e formatar a data.
Portanto, se você tiver datas que devem ser alterações nas colunas de 12 a 15, use
perl -MTime::Piece -F';' -ane '
sub reformat {
return Time::Piece->strptime(shift, "%d.%m.%y")->strftime("%d.%m.%Y");
}
for my $i (11..14) {
$F[$i] = reformat $F[$i];
}
print join(";", @F)
' file