Como alterar todas as linhas que consistem em um caractere "0" para outra coisa?

4

Eu tenho um arquivo com linhas semelhantes às abaixo:

0
0.1
0.0002
0
0.30

Eu quero substituir as linhas por um único 0 por algo como 0.0001 . Para as linhas com um decimal e dígitos depois, não quero alterá-las.

Eu tentei as variações abaixo de sed , mas ele não faz nada ou altera todos os zeros, mesmo após os decimais:

sed 's/0/x/g' file
sed 's/^0/x/g' file
sed 's/0^/x/g' file
sed 's/^0^/x/g' file
sed 's/"0"/x/g' file
sed 's/[0]/x/g' file

Parece que sed não pode manipular um único caractere 0 . Além disso, não tenho o comando replace no meu sistema. O que mais posso fazer?

    
por Tyler 21.08.2015 / 22:54

2 respostas

19

Para substituir um único 0 em uma linha:

sed 's/^0$/x/'

^ corresponde ao início da linha

$ corresponde ao final de uma linha

Portanto, o comando acima corresponde ao início de uma linha, seguido por 0, seguido pelo final da linha.

    
por 21.08.2015 / 22:56
4

Usando o Awk:

awk '{gsub(/^0$/,0.0001)};1' file 
    
por 21.08.2015 / 23:33

Tags