como substituir substring desconhecido da linha com sed

0

Quero substituir uma substring em uma linha, mas não sei o que é essa substring. Eu sei como a linha começa embora. Por exemplo, DNS1 = [... a ser substituído ....].

Eu tentei:

sed -i 's/DNS1=*/DNS1="8.8.8.8"/' /etc/sysconfig/network-scripts/ifcfg-eth0

e o resultado foi:

Antes: DNS1 = "10.10.2.2"

Depois: DNS1 = "8.8.8.8" "10.10.2.2"

O que estou fazendo errado...

cHam
fonte

Respostas:

2

Experimentar:

sed -i 's/DNS1=.*/DNS1="8.8.8.8"/' /etc/sysconfig/network-scripts/ifcfg-eth0

O *operador significa "corresponder ao caractere anterior 0 ou mais vezes". No seu exemplo, o caractere anterior é =, portanto, ele corresponderá DNS1=e nada mais, já que não há mais =caracteres seqüenciais , e substitua essa parte por DNS1="8.8.8.8", que gera a string DNS1="8.8.8.8""10.10.2.2", como você disse.

O .operador significa "qualquer caractere" no sedcontexto, o que provavelmente é o que você deseja aqui. Essa variação corresponderá DNS1=e, em seguida, "qualquer caractere 0 ou mais vezes" até o final da linha e depois a substituirá por DNS1="8.8.8.8".

Daniel Andersson
fonte
isso fez o truque. Achei que era algo simples assim, obrigado.
Cham