我想用sed用两个单引号替换字符串中的所有单引号.但是当字符串包含&字符时,sed命令不会替换之后出现的单引号.如何逃避&角色以使其后的单引号仍被替换?
Lev*_*sky 17
您不需要在输入中转义任何内容:
$ echo "123 ' foo & b'ar" | sed "s/'/''/g"
123 '' foo & b''ar
Run Code Online (Sandbox Code Playgroud)
但是,在s命令的'替换'部分&有一个特殊含义:它意味着'匹配'.这就是为什么上面的命令可以重写为:
$ echo "123 ' foo & b'ar" | sed "s/'/&&/g"
123 '' foo & b''ar
Run Code Online (Sandbox Code Playgroud)
\如果需要,可以像其他需要转义的内容一样逃脱它:
$ echo "123 ' foo & b'ar" | sed "s/'/'\&'/g"
123 '&' foo & b'&'ar
Run Code Online (Sandbox Code Playgroud)
如果你发布你的代码会更容易回答,但我猜你没有逃脱&符号.更改&到\&,如果你要一个文字符号.
如果您感到好奇,请参阅sed常见问题解答的第3.1.2节以获得更详细的解释.
| 归档时间: |
|
| 查看次数: |
12461 次 |
| 最近记录: |