変数を使用してLinuxで特殊文字を変更する方法

変数を使用してLinuxで特殊文字を変更する方法

特定のファイルでこのコマンドを使用していますが、sed機能しません。

例えば

a="adsfkndsa%/{}==admfkdsa"  
b=sadkfjdsaklfj  

sed -i -e 's/$a/$b/g' /tmp/sample.txt

他の方法を提案してください。

答え1

私はこれを試してみましたが、私のシステム(Debian 8)で動作します。

sed -i.bak "s|$a|$b|g" /tmp/sample.txt

変数にはが$a含まれているため、区切り文字を変更する必要があります/

今後:

cat /tmp/sample.txt.bak 
foo
adsfkndsa%/{}==admfkdsa
bar

後ろに:

cat /tmp/sample.txt
foo
sadkfjdsaklfj
bar

編集、sedバージョン情報:

sed --version
sed (GNU sed) 4.2.2

関連情報