小编典典

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

all

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

该项目包含 URL,例如?page=one. 要使链接在服务器上有效,它必须是/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&

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

pageone
pagetwo
pagethree

我想要b.txt包含的内容:

/page/one
/page/two
/page/three

阅读 76

收藏
2022-08-08

共1个答案

小编典典

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

s:?page=one&:pageone:g

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

s/\//foo/

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

2022-08-08