如何使用变量更改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

相关内容