sed中的转义字符

sed中的转义字符,sed,Sed,如何在sed中避开引号。我已经尝试使用反斜杠,但是sed继续尝试匹配我试图包含在字符串中的' sed -i 's/vclist_2d_.*/'$X'\'/g' 1759_input.py 这与其说是一个sed问题,不如说是一个shell问题。要获得传递给命令的单引号(sed,在本例中),它需要位于双引号字符串中,或者必须在单引号字符串之外使用\'。因此,对于单引号字符串,必须使用以下顺序: “…”\“…” 省略号后的第一个“完成当前单引号字符串 \'在参数中嵌入一个引号 “恢复单个带引号的字

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

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

这与其说是一个sed问题,不如说是一个shell问题。要获得传递给命令的单引号(
sed
,在本例中),它需要位于双引号字符串中,或者必须在单引号字符串之外使用
\'
。因此,对于单引号字符串,必须使用以下顺序:

  • “…”\“…”

  • 省略号后的第一个
    完成当前单引号字符串
  • \'
    在参数中嵌入一个引号
  • 恢复单个带引号的字符串
在上下文中,这意味着您应该使用:

sed -i 's/vclist_2d_.*/'"$X"\''/g' 1759_input.py
它用
$X
中的值替换
vclist\u 2d.*
,后跟一个单引号,全局(尽管全局是无意义的,因为匹配中的
*
无论如何都会吃掉第一个匹配中的剩余行)

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

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

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

对于替换中的
'
,使用
'\'
替换文本
'

范例

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

$X是一个变量,我将其定义为for循环的一部分。基本上,我正试图用它将文本
'vclist\u 2d\u 1.txt'
更改为
'vclist\u 2d\u n.txt'
,其中n的范围为1到10000。
X="B"; echo "abc" | sed 's/b/'"$X'"'/'    
aB'c