値に/が含まれているときに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つが含まれているので、これがうまくいくことを知っていますが、うまく機能するように/フォーマットする方法がわかりません。\まず、変数内の内容をエスケープする必要がありますか?

ベストアンサー1

変数に表示されると予想されない文字を含む代替\c...c形式を使用できます。c

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

c\sedコマンドの対応する部分は、2番目の変数に改行文字が含まれていない限り問題ありません。)

おすすめ記事