$ VALUEの内容に特殊文字があり、これをファイル()に追加したいと思います$FILE
。
このコマンドを実行するとき:
sed -i "s|T_VALUE|$VALUE|" "$FILE"
エラーが発生しました。コマンドは終了していません。
$VALUE
特殊文字をエスケープする必要があるという文章を見たことがありますが、動的値の行はわかりませんでした。この問題をどのように解決できますか?
ベストアンサー1
よりエレガントな引用のためにPerlを使うことができます。混乱を避けるために、環境変数を介してパラメータを渡すことができます。
$ SUB_LH='?|'
$ SUB_RH='/\'
$ cat mydata.txt
x?|y
?|ab?|
$ SUB_LH=$SUB_LH SUB_RH=$SUB_RH perl -p -i.bak -e 's/\Q$ENV{SUB_LH}\E/$ENV{SUB_RH}/g' mydata.txt
$ cat mydata.txt
x/\y
/\ab/\