如何在 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字符零次或多次”
如果模式暗示单个N字符和一个(或多个)后续数字 - 该模式部分应该是N[0-9]\{1,\}.
此外,.(句点) char 匹配任何字符,包括换行符(尽管换行符不会出现在此处的输入中)。要按字面匹配\.
,应将其转义主要的模式看起来像/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

相关内容