sedコマンドは置き換えられたテキストを置き換えていますか?

sedコマンドは置き換えられたテキストを置き換えていますか?

アイコンの名前を変更するbashスクリプトを作成しています。具体的には、HTMLファイルで「icon-close-m」を「icon-close icon-size-medium」に変更しようとしています。 ([a-z]以下の行に指定されているように「close」を除くすべての部分文字列を含めることができますが)

コマンドラインからこのコマンドを実行すると、次のように動作します。

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でも同様の問題を見たことはありません。このコマンドはどのようなループにも含まれません。

関連情報