![sed linux 替换复杂链接](https://linux22.com/image/763574/sed%20linux%20%E6%9B%BF%E6%8D%A2%E5%A4%8D%E6%9D%82%E9%93%BE%E6%8E%A5.png)
我面临着从变量传递链接的挑战:
InstallLocation=/opt/software/software.properties
ReplaceeVar=http://localhost:1234/ab/cd/{company}/{employee}/
sed -i "s/Change_This_Url/"${ReplaceeVar}"/g" "$InstallLocation"
构建的 URL 可能会失败,如下所示:
sed: -e expression #1, char xx: unterminated `s' command
答案1
首先,我不知道你所有的引号是干什么用的。只需在替换命令两边加上一组引号即可。
您使用斜杠来分隔命令中的正则表达式和替换字符串sed
。ReplaceeVar
也包含大量斜杠。 生成的命令是
sed -i "s/Change_This_Url/http://localhost:1234/ab/cd/{company}/{employee}//g" "$InstallLocation"
你知道为什么这不管用吗?
解决方案是不使用斜线,而是使用其他字符来分隔正则表达式和替换字符串。在我看来,管道符号比斜线更漂亮:
sed -i "s|Change_This_Url|${ReplaceeVar}|g" "$InstallLocation"