+ Responder ao Tópico



  1. #1
    guppista
    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á!

  2. 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:

    Código :
    :g/^\./s//0\./g

    Pra substituir valores que estejam precedidos por espaço:

    Código :
    :g/\ \./s//\ 0\./g

    Se puder, coloca aí uma amostra do arquivo pra facilitar.

    flw



  3. #3
    guppista
    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:

    Código :
    :g/^\./s//0\./g

    Pra substituir valores que estejam precedidos por espaço:

    Código :
    :g/\ \./s//\ 0\./g

    Se puder, coloca aí uma amostra do arquivo pra facilitar.

    flw






Tópicos Similares

  1. Problemas para navegar
    Por no fórum Servidores de Rede
    Respostas: 2
    Último Post: 21-06-2003, 13:54
  2. erro no editor VI HELP.
    Por MAJOR no fórum Servidores de Rede
    Respostas: 2
    Último Post: 05-06-2003, 01:25
  3. problemas para enviar msgs
    Por dboom no fórum Servidores de Rede
    Respostas: 13
    Último Post: 18-03-2003, 18:09
  4. problemas Editor VI
    Por no fórum Servidores de Rede
    Respostas: 2
    Último Post: 29-01-2003, 23:30
  5. Problema para instalar o openssh
    Por no fórum Servidores de Rede
    Respostas: 3
    Último Post: 22-11-2002, 14:06

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L