sed-用包含的变量替换字符串?

sed-用包含的变量替换字符串?

请帮忙,尽管在这里进行了广泛的搜索,但我还是没有任何进展。

我有一个 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

相关内容