如何在sed中转义引号。我已经尝试使用反斜杠,但是sed继续尝试匹配'我想要包含在我的字符串中。
sed -i 's/vclist_2d_.*/'$X'\'/g' 1759_input.py
答案 0 :(得分:3)
这是一个shell问题,而不是sed
问题。要将单引号传递给命令(在本例中为sed
),它需要使用双引号字符串,或者必须在单引号字符串之外使用\'
。因此,对于单引号字符串,您必须使用序列:
'...'\''...'
'
。\'
在论证中嵌入单引号。'
恢复单引号字符串。在上下文中,这意味着你应该使用:
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