sed linux 替换复杂链接

sed linux 替换复杂链接

我面临着从变量传递链接的挑战:

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

首先,我不知道你所有的引号是干什么用的。只需在替换命令两边加上一组引号即可。

您使用斜杠来分隔命令中的正则表达式和替换字符串sedReplaceeVar也包含大量斜杠。 生成的命令是

sed -i "s/Change_This_Url/http://localhost:1234/ab/cd/{company}/{employee}//g" "$InstallLocation"

你知道为什么这不管用吗?

解决方案是不使用斜线,而是使用其他字符来分隔正则表达式和替换字符串。在我看来,管道符号比斜线更漂亮:

sed -i "s|Change_This_Url|${ReplaceeVar}|g" "$InstallLocation"

相关内容