【问题标题】:Why does sed remove the character in the example?为什么 sed 会删除示例中的字符?
【发布时间】:2020-12-28 00:25:14
【问题描述】:
a=a
b=ab
c=''
d=''
echo ac | sed "s/$a/$b/;"
abc
echo ac | sed "s/$a/$b/; s/$c/$d/"
bc

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

【问题讨论】:

    标签: sed replace


    【解决方案1】:

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

    所以,

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

    这里,

    • a 替换为 ab 先替换为 s/a/ab/ac 变为 abc
    • as/a// 一起被删除(abc 变为 bc)。

    请参阅文档,Regular Expressions in sed section

    如果一个 RE 是空的(即没有指定模式)sed 应该表现得就像在最后一个应用的命令中使用的最后一个 RE(作为地址或作为替代命令的一部分) ) 已指定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2020-04-02
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多