Eu apenas tentei 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 $a
contém /
.
Antes:
cat /tmp/sample.txt.bak
foo
adsfkndsa%/{}==admfkdsa
bar
Depois:
cat /tmp/sample.txt
foo
sadkfjdsaklfj
bar
Editar, informações da versão do sed:
sed --version
sed (GNU sed) 4.2.2