sed 置換中に条件付きパターンを含むワイルドカードを使用するには?

sed 置換中に条件付きパターンを含むワイルドカードを使用するには?

次のコマンドが有効です。

sed -i "/BC_CD23.BC_B.BC_A1.N1_C/s/CELL4WL_4BL_3/CELL4WL_4BL_1/g" s1*M8*
sed -i "/BC_CD23.BC_B.BC_A1.N0_C/s/CELL4WL_4BL_3/CELL4WL_4BL_1/g" s1*M8*

このコマンドは効果がありません。

sed -i "/BC_CD23.BC_B.BC_A1.N*_C/s/CELL4WL_4BL_3/CELL4WL_4BL_1/g" s1*M8*

パターンにワイルドカード文字を使用するには?

答え1

パターンにワイルドカードを使用する方法

あなたの特定のケースでは、N*次のことを意味します。N文字が0回以上一致します」
パターンが単一のN文字と1つ以上の数字を意味する場合は、パターンの対応する部分が必要ですN[0-9]\{1,\}
また.、(ピリオド)文字は改行文字を含むすべての文字と一致します(ただし、改行文字は入力には表示されません)。文字通り一致するには\.
エスケープする必要があります。基本パターンは次のとおりです。/BC_CD23\.BC_B\.BC_A1\.N[0-9]\{1,\}_C/

https://www.gnu.org/software/sed/manual/sed.html#Overview-of-basic-regular-expression-syntax

関連情報