首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在sed中转义双引号和单引号?

如何在sed中转义双引号和单引号?
EN

Stack Overflow用户
提问于 2011-09-22 23:46:38
回答 9查看 172K关注 0票数 85

据我所知,当你使用单引号时,里面的所有东西都被认为是字面上的。我想用这个做我的替身。但我也想找一个包含单引号或双引号的字符串。

例如,

代码语言:javascript
复制
sed -i 's/"http://www.fubar.com"/URL_FUBAR/g'

我想用URL_FUBAR替换"http://www.fubar.com“。sed应该如何识别我的//或双引号?

谢谢你的帮助!

编辑:我可以使用s/\"http\:\/\/www\.fubar\.\com\"/URL_FUBAR/g吗?

是否真的转义单引号内的字符?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-09-23 00:03:26

sed中的s///命令允许您使用其他字符而不是/作为分隔符,如

代码语言:javascript
复制
sed 's#"http://www\.fubar\.com"#URL_FUBAR#g'

代码语言:javascript
复制
sed 's,"http://www\.fubar\.com",URL_FUBAR,g'

双引号不是问题。要匹配单引号,请交换两种类型的引号。请注意,单引号字符串不能包含单引号(甚至不能包含转义的引号)。

如果sed要将这些点解释为文字点,而不是匹配任何一个字符的正则表达式模式.,则需要对这些点进行转义。

票数 114
EN

Stack Overflow用户

发布于 2013-05-17 21:00:30

我的问题是,我需要将""放在表达式之外,因为我在sed表达式本身内部有一个动态变量。因此,实际的解决方案是lenn jackman提出的,将sed正则表达式中的"替换为[\"]

所以我要说的是:

代码语言:javascript
复制
RELEASE_VERSION="0.6.6"

sed -i -e "s#value=[\"]trunk[\"]#value=\"tags/$RELEASE_VERSION\"#g" myfile.xml

下面是:

#是sed分隔符

正则表达式中的[\"] = "

\" = \"tags/$RELEASE_VERSION\" =我的替换字符串,重要的是它只有引号的值

票数 16
EN

Stack Overflow用户

发布于 2011-09-23 01:15:54

很难在单引号中转义单引号。试试这个:

代码语言:javascript
复制
sed "s@['\"]http://www.\([^.]\+).com['\"]@URL_\U\1@g" 

示例:

代码语言:javascript
复制
$ sed "s@['\"]http://www.\([^.]\+\).com['\"]@URL_\U\1@g" <<END
this is "http://www.fubar.com" and 'http://www.example.com' here
END

产生

代码语言:javascript
复制
this is URL_FUBAR and URL_EXAMPLE here
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7517632

复制
相关文章

相似问题

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