如何使sed使用双引号("
)作为匹配?
我只尝试将"source/design
替换为"source/design_new
,而不更改第二个代码。
输入:
"source/design",
"include/source/design",
预期输出:
"source/design_new", #only this line renaming
"include/source/design"
我试着使用命令:
sed "s/\"source\/design/\"source\/design_new/g"
但它正在抱怨一个unmatched "
错误。在sed
中有没有使用双引号的方法
发布于 2015-04-16 22:12:35
基本上,sed
接受s
后面的任何内容作为分隔符(换行符或反斜杠除外)。因此,您可以使用一些其他字符代替/
作为分隔符,比如;
。
示例:
sed 's;"source/design;"source/design_new;g' input_file
发布于 2015-04-16 22:10:57
只需在命令两边使用单引号,而不是双引号。通过这种方式,您不必担心如何处理它们:
sed 's~"source/design~"source/design_new~g' file
^ ^
对于给定的输入,此命令将返回:
"source/design_new",
"include/source/design",
还要注意,您可以通过在/
中使用另一个分隔符(我使用了~
,尽管它也可以是|
或其他分隔符)来避免对每个分隔符进行转义。
发布于 2015-04-16 22:11:46
欢迎来到tcsh。不能在双引号中包含双引号。结束双引号和反斜杠的双引号:
sed "s/"\""source\/design/"\""source\/design_new/g"
或者,可读性更好(使用不同的分隔符以避免反斜杠的需要,并且不使用引号,因为字母、斜杠和下划线不需要引号:
sed s=\"source/design=\"source/design_new=g
https://stackoverflow.com/questions/29677027
复制相似问题