終了していないsコマンド、特殊文字を含むシード、およびsed

終了していないsコマンド、特殊文字を含むシード、およびsed

$ 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/\

おすすめ記事