![값에 /가 포함되어 있을 때 sed의 컨텍스트 주소에서 변수를 사용하는 방법은 무엇입니까?](https://linux55.com/image/11098/%EA%B0%92%EC%97%90%20%2F%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%98%EC%96%B4%20%EC%9E%88%EC%9D%84%20%EB%95%8C%20sed%EC%9D%98%20%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8%20%EC%A3%BC%EC%86%8C%EC%97%90%EC%84%9C%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
줄의 일부에만 일치하는 파일의 줄 전체를 변경하려고 합니다. 예를 들어, "$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 명령의 해당 부분은 두 번째 변수에 개행 문자가 포함되어 있지 않으면 문제가 되지 않습니다.)