Editor vi. Problemas para substituir o caracter "ponto"
Olá Pessoal.
O problema é o seguinte:
Tenho uma série de arquivos de dados em números que preciso tratar. Muitos desses dados estão sem o 0. do número decimal(. ao invés de , pois o tratamento é com software estrangeiro). Por exemplo:
Ao invés de 0.XXX está apenas .XXX
Eu tentei resolver o problema dando o comando : s/ ./0./g ,porém,
acho que o vi entende o . como primeiro caracter e acaba criando em todo primeiro caracter de uma palavra o 0.
Não descobri uma maneira mais inteligente de fazer essa operação portanto, se alguém puder, por favor me fale como, OK?
Valeu desde já!
Re: Editor vi. Problemas para substituir o caracter "ponto"
Olá, amigo
Esse comportamento acontece porque a string a ser substituida é interpretada como uma expressão regular. Dessa maneira, o . (ponto) é um caracter especial e precisa ser precedido por \ (barra invertida) pra poder ser interpretado como apenas um caracter normal.
No seu caso vai depender em que posição na linha está número onde falta o zero. Se ele estiver no começo da linha, pode usar o seguinte:
Pra substituir valores que estejam precedidos por espaço:
Se puder, coloca aí uma amostra do arquivo pra facilitar.
flw
Re: Editor vi. Problemas para substituir o caracter "ponto"
Olá Lidzky,
Muito obrigado pela informação. Consegui resolver o problema colocando a \ antes do ponto no comando.
Ai está um exemplo de uma linha do arquivo antes:
2002 39 30 1011 .35 33.62 27.37 13.2 27.01
E a linha editada:
2002 39 30 1011 0.35 33.62 27.37 13.2 27.01
Só para matar uma possível curiosidade, esta linha faz parte de um arquivo de dados de uma estação meteorológica onde, em ordem crescente de colunas, temos: ano, dia, hora(de 30 em 30 minutos), pressão, intensidade do vento, direção do vento e dados de controle do equipamento que faz o registro.
Obrigado mesmo.
Citação:
Postado originalmente por lidzky
Olá, amigo
Esse comportamento acontece porque a string a ser substituida é interpretada como uma expressão regular. Dessa maneira, o . (ponto) é um caracter especial e precisa ser precedido por \ (barra invertida) pra poder ser interpretado como apenas um caracter normal.
No seu caso vai depender em que posição na linha está número onde falta o zero. Se ele estiver no começo da linha, pode usar o seguinte:
Pra substituir valores que estejam precedidos por espaço:
Se puder, coloca aí uma amostra do arquivo pra facilitar.
flw