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