我有一个Visual Studio项目,该项目在本地开发。代码文件必须部署到远程服务器。唯一的问题是它们包含的URL是硬编码的。
项目包含诸如?page = one之类的URL 。为了使链接在服务器上有效,它必须为/ page / one。
我已决定在部署之前用sed替换代码文件中的所有URL,但是我只能使用斜线。
我知道这不是一个很好的解决方案,但是很简单,可以节省很多时间。我必须替换的字符串总数少于10。必须检查的文件总数约为30。
描述我的情况的示例如下:
我正在使用的命令:
sed -f replace.txt < a.txt > b.txt
replace.txt,其中包含所有字符串:
s/?page=one&/pageone/g
s/?page=two&/pagetwo/g
s/?page=three&/pagethree/g
a.txt:
?page=one&
?page=two&
?page=three&
运行sed命令后b.txt的内容:
pageone
pagetwo
pagethree
我想要b.txt包含什么:
/page/one
/page/two
/page/three
最简单的方法是在搜索/替换行中使用其他定界符,例如:
s:?page=one&:pageone:g
您可以使用任何字符作为分隔符,而不是任何字符串的一部分。或者,您可以使用反斜杠将其转义:
s/\//foo/
将替换/
为foo
。如果您不知道替换字符串中可能出现哪些字符(例如,如果它们是shell变量),则需要使用转义的反斜杠。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句