为什么sed会删除示例中的字符?

为什么sed会删除示例中的字符?,sed,replace,Sed,Replace,为什么sed会删除上一个示例中的字符“a”?这是因为$c是一个空字符串,当sed被传递一个带有空模式的后续s命令时,会使用前一个命令,在这种情况下,$a,即a 所以 这里, a替换为ab首先替换为s/a/ab/(ac变成abc) a与s/a/一起删除(abc变为bc) 见文件,请参阅: 如果RE为空(即未指定模式),则sed的行为应与指定应用的最后一个命令(作为地址或作为替代命令的一部分)中的最后一个RE相同 a=a b=ab c='' d='' echo ac | sed "s/

为什么sed会删除上一个示例中的字符“a”?

这是因为
$c
是一个空字符串,当
sed
被传递一个带有空模式的后续
s
命令时,会使用前一个命令,在这种情况下,
$a
,即
a

所以

这里,

  • a
    替换为
    ab
    首先替换为
    s/a/ab/
    ac
    变成
    abc
  • a
    s/a/
    一起删除(
    abc
    变为
    bc
见文件,请参阅:

如果RE为空(即未指定模式),则sed的行为应与指定应用的最后一个命令(作为地址或作为替代命令的一部分)中的最后一个RE相同

a=a
b=ab
c=''
d=''
echo ac | sed "s/$a/$b/;"
abc
echo ac | sed "s/$a/$b/; s/$c/$d/"
bc
echo ac | \ 
 sed "s/$a/$b/; s/$c/$d/"
#       a  ab     a