data de correspondência do padrão sed

data de correspondência do padrão sed

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.yyyypara dd/mm/yyyybasicamente 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

informação relacionada