sed 命令正在替换被替换的文本?

sed 命令正在替换被替换的文本?

我正在编写一个 bash 脚本来重命名图标。具体来说,我正在尝试将 HTML 文件中的“icon-close-m”更改为“icon-close icon-size-medium”。 (尽管它可以包含除“close”之外的任何子字符串,如[a-z]下面行中所述)

当我从命令行运行此命令时它起作用:

sed -i -e "s/\(icon-[a-z]*\)-m[^e]/\1 icon-size-medium/g" ./app/index.html

结果:

icon-close icon-size-medium

但是,当我从脚本运行它时,它会将其更改为:

icon-close icon-sizeedium

以下是应更改的文本示例:

<span class="icon-close-m"></span>

应该变成:

<span class="icon-close icon-size-medium"></span>

它似乎正在经历并取代-m 在新的替换中,在初始替换之后。仅当该命令在 bash 脚本中实现时才会执行此操作。我以前没有见过这种情况发生,也没有在 SE/SO 上看到任何类似的问题。请注意,此命令不在任何类型的循环内。

相关内容