값에 /가 포함되어 있을 때 sed의 컨텍스트 주소에서 변수를 사용하는 방법은 무엇입니까?

값에 /가 포함되어 있을 때 sed의 컨텍스트 주소에서 변수를 사용하는 방법은 무엇입니까?

줄의 일부에만 일치하는 파일의 줄 전체를 변경하려고 합니다. 예를 들어, "$Netconf_DHCPStart" /가 없기 때문에 다음 명령은 제대로 작동합니다 .

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

그러나 다음 명령은 작동하지 않습니다

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

오류가 발생합니다.

sed: -e 표현식 #1, 문자 32: 알 수 없는 명령: '2'

"$Current_StaticIP"에 하나가 포함되어 있기 때문에 이것이 작동한다는 것을 알고 있지만 /작동하도록 형식을 지정하는 방법을 잘 모르겠습니다. \먼저 변수 내부의 내용을 이스케이프 해야 합니까 ?

답변1

변수에 나타날 것으로 예상되지 않는 문자가 있는 대체 \c...c형식을 사용할 수 있습니다 .c

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

( c\sed 명령의 해당 부분은 두 번째 변수에 개행 문자가 포함되어 있지 않으면 문제가 되지 않습니다.)

관련 정보