我有一个本地开发的 Visual Studio 项目。代码文件必须部署到远程服务器。唯一的问题是它们包含的 URL,它们是硬编码的。
该项目包含 URL,例如?page=one. 要使链接在服务器上有效,它必须是/page/one.
?page=one
/page/one
我决定在部署之前用 sed 替换我的代码文件中的所有 URL,但我被困在斜杠上。
我知道这不是一个很好的解决方案,但它很简单,可以为我节省很多时间。我必须替换的字符串总数少于 10 个。必须检查的文件总数约为 30。
描述我的情况的示例如下:
我正在使用的命令:
sed -f replace.txt < a.txt > b.txt
replace.txt其中包含所有字符串:
replace.txt
s/?page=one&/pageone/g s/?page=two&/pagetwo/g s/?page=three&/pagethree/g
a.txt:
a.txt
?page=one& ?page=two& ?page=three&
b.txt运行 sed 命令后的内容:
b.txt
pageone pagetwo pagethree
我想要b.txt包含的内容:
/page/one /page/two /page/three
最简单的方法是在搜索/替换行中使用不同的分隔符,例如:
s:?page=one&:pageone:g
您可以使用不属于任一字符串的任何字符作为分隔符。或者,您可以使用反斜杠对其进行转义:
s/\//foo/
这将替换/为foo. 如果您不知道替换字符串中可能出现哪些字符(例如,如果它们是 shell 变量),您可能希望使用转义的反斜杠。
/
foo