sedが代替文字列を解釈するのを防ぐ方法はありますか?

sedが代替文字列を解釈するのを防ぐ方法はありますか?

sed文字列置換キーワードを使用するには、sed置換文字列を解釈してください。代替文字列にsed特殊と見なされる文字(charなど)が含まれている場合、何をすべきかを示す文字が/代替文字列に含まれたくない限り失敗します。sed

前任者:

VAR="hi/"

sed "s/KEYWORD/$VAR/g" somefile

sed特殊文字を解釈しないように代替文字列を指示する方法はありますか?私が望むのは、内容が何であれ、ファイルのキーワードを変数の内容に置き換えることができることです。

ベストアンサー1

置換部分には4つの特殊文字しかありません:\、、 &改行、区切り記号(引用する)

$ VAR='abc/def&ghi\foo
next line'

$ repl=$(sed -e 's/[&\\/]/\\&/g; s/$/\\/' -e '$s/\\$//' <<<"$VAR")

$ echo "$repl"
abc\/def\&ghi\\foo\
next line

$ echo ZYX | sed "s/Y/$repl/g"
Zabc/def&ghi\foo
next lineX

おすすめ記事