Como usar uma variável em um endereço de contexto em sed quando o valor contém /?

0

Estou tentando alterar a linha inteira em um arquivo correspondido apenas por parte da linha. por exemplo. o comando abaixo funciona bem, pois "$ Netconf_DHCPStart" não possui / :

sed -e '/DHCP_START=/c\DHCP_START='"$Netconf_DHCPStart"

No entanto, o comando abaixo não funciona

sed '/static ip_address='"${Current_StaticIP}"'/c\static ip_address='"$Netconf_range"'.110' /etc/dhcpcd.conf

dando erro:

sed: -e expression #1, char 32: unknown command: '2'

Eu sei que isso ocorre porque "$ Current_StaticIP" contém um / dentro dele, no entanto, não tenho certeza de como formatá-lo para que funcione. Preciso escapar do \ dentro da variável primeiro?

    
por Josh 19.09.2018 / 16:10

1 resposta

0

Você pode usar a alternativa \c...c form, em que c é qualquer caractere que não é esperado dentro de sua variável:

sed '\%static ip_address='"${Current_StaticIP}"'%c\static ip_address='"$Netconf_range"'.110'

(A parte c\ do seu comando sed não é o problema, a menos que sua segunda variável contenha uma nova linha.)

    
por 19.09.2018 / 16:25

Tags