在sed中转义字符

时间:2015-02-04 18:16:24

标签: sed

如何在sed中转义引号。我已经尝试使用反斜杠,但是sed继续尝试匹配'我想要包含在我的字符串中。

sed -i 's/vclist_2d_.*/'$X'\'/g' 1759_input.py

3 个答案:

答案 0 :(得分:3)

这是一个shell问题,而不是sed问题。要将单引号传递给命令(在本例中为sed),它需要使用双引号字符串,或者必须在单引号字符串之外使用\'。因此,对于单引号字符串,您必须使用序列:

  • '...'\''...'

    1. 省略号完成当前单引号字符串后的第一个'
    2. \'在论证中嵌入单引号。
    3. '恢复单引号字符串。

在上下文中,这意味着你应该使用:

sed -i 's/vclist_2d_.*/'"$X"\''/g' 1759_input.py

vclist_2d_.*中的值替换$X后跟单引号全局(尽管全局没有意义,因为匹配中的.*会占用该行的其余部分无论如何,在第一场比赛中。)

在这种情况下,您可以简化:

sed -i "s/vclist_2d_.*/$X'/" 1759_input.py

$X中的值不得包含任何斜杠。

答案 1 :(得分:0)

代替'替换使用'\''进行文字'替换。

例如

sed 's/vclist_2d_.*/'$X''\''/g' 1759_input.py

答案 2 :(得分:0)

X="B"; echo "abc" | sed 's/b/'"$X'"'/'    
aB'c