Alterar String com Sed

2

Eu gostaria de alterar a seguinte string

allow ^120\.123\.178\.254$

em

allow ^124\.130\.23\.235$

com sed.

Eu tentei o seguinte, mas não funciona.

sed -e 's/allow ^120\.123\.178\.254$/allow ^124\.130\.23\.235$/g' /etc/xxx/file.conf

Você pode me ajudar?

    
por Nosxxx 05.09.2016 / 19:58

2 respostas

2

Sua origem tem os caracteres \ , $ , ^ e . , que precisarão de cotação adicional. Também o seu alvo tem \ , que deve ser citado

A string resultante é um pouco confusa:

sed 's/allow \^120\\.123\\.178\\.254\$/allow ^124\.130\.23\.235$/'

O g final que você teve é necessário apenas se essa string puder aparecer várias vezes por linha.

Por exemplo:

$ cat x
allow ^120\.123\.178\.254$
$ sed 's/allow \^120\\.123\\.178\\.254\$/allow ^124\.130\.23\.235$/' x 
allow ^124\.130\.23\.235$
    
por 05.09.2016 / 20:07
1

Se perl for uma opção, o padrão de pesquisa e a substituição podem ser citados

$ cat file.conf
allow ^120\.123\.178\.254$

$ perl -pe 's/\Qallow ^120\.123\.178\.254$/q(allow ^124\.130\.23\.235$)/e' file.conf
allow ^124\.130\.23\.235$
    
por 06.09.2016 / 05:44

Tags