首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用sed插入包含斜杠的字符串?

如何使用sed插入包含斜杠的字符串?
EN

Stack Overflow用户
提问于 2013-05-28 19:21:39
回答 9查看 214.5K关注 0票数 172

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

该项目包含诸如?page=one之类的URLS。要使链接在服务器上有效,它必须是/page/one

我已经决定在部署之前用sed替换代码文件中的所有URLS,但我被斜杠卡住了。

我知道这不是一个很好的解决方案,但它很简单,可以节省我很多时间。我必须替换的字符串总数少于10个。必须检查的文件总数为~30个。

下面是描述我的情况的例子:

我正在使用的命令:

代码语言:javascript
复制
sed -f replace.txt < a.txt > b.txt

包含所有字符串的replace.txt

代码语言:javascript
复制
s/?page=one&/pageone/g
s/?page=two&/pagetwo/g
s/?page=three&/pagethree/g

a.txt

代码语言:javascript
复制
?page=one&
?page=two&
?page=three&

运行sed命令后b.txt的内容:

代码语言:javascript
复制
pageone
pagetwo
pagethree

我希望b.txt包含的内容:

代码语言:javascript
复制
/page/one
/page/two
/page/three
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-05-28 19:24:23

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

代码语言:javascript
复制
s:?page=one&:pageone:g

您可以使用不属于这两个字符串的任何字符作为分隔符。或者,您可以使用反斜杠对其进行转义:

代码语言:javascript
复制
s/\//foo/

这将用foo取代/。在不知道替换字符串中可能出现哪些字符的情况下(例如,如果它们是shell变量),您可能希望使用转义反斜杠。

票数 310
EN

Stack Overflow用户

发布于 2013-05-28 19:25:16

s命令可以使用任何字符作为分隔符;使用s之后的任何字符。我从小就被教育使用#。如下所示:

代码语言:javascript
复制
s#?page=one&#/page/one#g
票数 116
EN

Stack Overflow用户

发布于 2013-05-28 19:25:45

关于sed,一个非常有用但鲜为人知的事实是,熟悉的s/foo/bar/命令可以使用任何标点符号,而不仅仅是斜杠。一种常见的替代方案是s@foo@bar@,通过它可以很容易地解决您的问题。

票数 70
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16790793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档