我正在尝试用文件中的$old
字符串替换字符串,其中:$new
old=ESX_10.1.1.1\@11.11.11.11
new=host_15_11_0_111.static
我正在使用 sed 命令:
sed i "s/${old}/${new}/g" /filename
但它不会替换该单词,也不会显示任何错误。我尝试过很多方法,比如替换:
sed i "s,${old},${new},g" /filename
和
sed i "s=${old}=${new}=g" /filename
但它不起作用。帮我解决这个问题
答案1
你需要\
和另一个人一起逃脱\
。您可以在 bash shell 变量中执行此操作,如下所示
sed -i -e "s/${old//\\/\\\\}/${new//\\/\\\\}/g" filename
看man bash
参数扩展为了${parameter/pattern/string}
。我们使用 with 的版本//
来代替/
重复执行。而且我们需要逃避\
自身,所以它会被重复很多次。