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

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

我有一个VisualStudio项目,它是本地开发的。必须将代码文件部署到远程服务器。唯一的问题是URL-它们包含硬编码的URL。

项目包含URL,如?page=1..要使链接在服务器上有效,它必须是/页/一 .

在部署之前,我已经决定用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


慕斯王
浏览 1883回答 3
3回答

一只名叫tom的猫

最简单的方法是在搜索/替换行中使用不同的分隔符,例如:s:?page=one&:pageone:g您可以使用任何字符作为分隔符,而不是任何字符串的一部分。或者,你可以用反斜杠逃离它。

明月笑刀无情

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

慕虎7371278

有关sed的一个非常有用但鲜为人知的事实是s/foo/bar/命令可以使用任何标点符号,而不仅仅是斜杠。一个常见的选择是s@foo@bar@如何解决你的问题变得很明显。
打开App,查看更多内容
随时随地看视频慕课网APP