
Estou lutando para entender como usar a correspondência de padrões usando sed.
Dentro de um arquivo grande, desejo substituir o seguinte formato de data de dd.mm.yyyy
para dd/mm/yyyy
basicamente substituir os pontos por barras. O arquivo contém múltiplas ocorrências de datas no formato indicado, porém, não deve alterar pontos finais no final de frases, etc.
sed 's/\./\//g' <file_name>
faz o trabalho, mas muda a cada (.), então preciso de alguma maneira de realizar uma correspondência de padrões.
Qualquer ajuda seria apreciada.
Obrigado
Responder1
Isso faz o trabalho:
sed 's/\([0-9][0-9]\)\.\([0-9][0-9]\)\.\([0-9]\{4\}\)/\1\/\2\/\3/g' file
Explicação:
s/ # substitute
\([0-9][0-9]\) # group 1, 2 digits
\. # a dot
\([0-9][0-9]\) # group 2, 2 digits
\. # a dot
\([0-9]\{4\}\) # group 3, 4 digits
/
\1 # content of group 1
\/ # a slash
\2 # content of group 2
\/ # a slash
\3 # content of group 3
/g # global flag