为了账号安全,请及时绑定邮箱和手机立即绑定

如何用sed替换包含斜杠的字符串?

如何用sed替换包含斜杠的字符串?

慕斯王 2019-07-01 10:02:35
如何用sed替换包含斜杠的字符串?我有一个VisualStudio项目,它是本地开发的。必须将代码文件部署到远程服务器。唯一的问题是URL-它们包含硬编码的URL。项目包含URL,如?page=1..要使链接在服务器上有效,它必须是/页/一 .在部署之前,我已经决定用sed替换代码文件中的所有URL,但是我被斜杠卡住了。我知道这不是一个很好的解决方案,但很简单可以节省我很多时间。我必须替换的字符串总数小于10,必须检查的文件总数为30。下面是描述我的情况的示例:我使用的命令:sed -f replace.txt < a.txt > b.txtreplace.txt,它包含所有字符串:s/?page=one&/pageone/g s/?page=two&/pagetwo/g s/?page=three&/pagethree/gA.txt:?page=one& ?page=two& ?page=three&运行sed命令后,b.txt的内容:pageone pagetwo pagethree我希望b.txt包含:/page/one /page/two /page/three
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

最简单的方法是在搜索/替换行中使用不同的分隔符,例如:

s:?page=one&:pageone:g

您可以使用任何字符作为分隔符,而不是任何字符串的一部分。或者,你可以用反斜杠逃离它。


查看完整回答
反对 回复 2019-07-01
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

这个s命令可以使用任何字符作为分隔符;s被利用了。我从小就用#..就像这样:

s#?page=one&#/page/one#g


查看完整回答
反对 回复 2019-07-01
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

有关sed的一个非常有用但鲜为人知的事实是s/foo/bar/命令可以使用任何标点符号,而不仅仅是斜杠。一个常见的选择是s@foo@bar@如何解决你的问题变得很明显。


查看完整回答
反对 回复 2019-07-01
  • 3 回答
  • 0 关注
  • 1882 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信