据我所知,当你使用单引号时,里面的所有东西都被认为是字面上的。我想用这个做我的替身。但我也想找一个包含单引号或双引号的字符串。
例如,
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吗?
是否真的转义单引号内的字符?
发布于 2011-09-23 00:03:26
sed中的s///命令允许您使用其他字符而不是/作为分隔符,如
sed 's#"http://www\.fubar\.com"#URL_FUBAR#g'或
sed 's,"http://www\.fubar\.com",URL_FUBAR,g'双引号不是问题。要匹配单引号,请交换两种类型的引号。请注意,单引号字符串不能包含单引号(甚至不能包含转义的引号)。
如果sed要将这些点解释为文字点,而不是匹配任何一个字符的正则表达式模式.,则需要对这些点进行转义。
发布于 2013-05-17 21:00:30
我的问题是,我需要将""放在表达式之外,因为我在sed表达式本身内部有一个动态变量。因此,实际的解决方案是lenn jackman提出的,将sed正则表达式中的"替换为[\"]。
所以我要说的是:
RELEASE_VERSION="0.6.6"
sed -i -e "s#value=[\"]trunk[\"]#value=\"tags/$RELEASE_VERSION\"#g" myfile.xml下面是:
#是sed分隔符
正则表达式中的[\"] = "
\" = \"tags/$RELEASE_VERSION\" =我的替换字符串,重要的是它只有引号的值
发布于 2011-09-23 01:15:54
很难在单引号中转义单引号。试试这个:
sed "s@['\"]http://www.\([^.]\+).com['\"]@URL_\U\1@g" 示例:
$ sed "s@['\"]http://www.\([^.]\+\).com['\"]@URL_\U\1@g" <<END
this is "http://www.fubar.com" and 'http://www.example.com' here
END产生
this is URL_FUBAR and URL_EXAMPLE herehttps://stackoverflow.com/questions/7517632
复制相似问题