![sed-用包含的变量替换字符串?](https://linux22.com/image/1619547/sed-%E7%94%A8%E5%8C%85%E5%90%AB%E7%9A%84%E5%8F%98%E9%87%8F%E6%9B%BF%E6%8D%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%9F.png)
请帮忙,尽管在这里进行了广泛的搜索,但我还是没有任何进展。
我有一个 html 文件,我想替换其中的某些链接 - 问题是,其中一些链接中有一个?。
original='http://old.com/img_7251.jpg?w=300&h=200'
replace='http://new.com/img_7251.jpg'
sed -i "s#$original#$replace#g" inputfile.html
当原始字符串中没有 ? 时,它会起作用,而当有 ? 时,它不会执行任何操作。我确实有一个逻辑,所以我需要用变量替换它。
在原始变量中转义 ? 可能会有帮助吗?但是如何做呢?
谢谢
答案1
您必须使用 ~ 代替 #,并在 sed 末尾添加 ~g 表示全局,请使用以下命令:
sed -i "s~$original~$replace~g" inputfile.html