Como alterar caracteres especiais no Linux usando variável

Como alterar caracteres especiais no Linux usando variável

Estou usando este sedcomando em um arquivo específico, mas não funciona.

por exemplo

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

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

Por favor, sugira outra maneira.

Responder1

Acabei de tentar isso e funciona no meu sistema (Debian 8):

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

Você precisa alterar o delimitador, pois a variável $acontém um arquivo /.

Antes:

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

Depois:

cat /tmp/sample.txt
foo
sadkfjdsaklfj
bar

Editar, informações da versão sed:

sed --version
sed (GNU sed) 4.2.2

informação relacionada