Como faço para usar o padrão condicional curinga durante a substituição do sed?

1

Os seguintes comandos funcionam.

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*

Este comando não funciona.

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

Como uso curingas em padrões?

    
por Roopak Vasa 06.11.2017 / 07:48

1 resposta

2

how to use wild card in pattern

No seu caso particular, N* significa "coincidir N caractere zero ou mais vezes" .
Se o padrão implica em único N char e um (ou mais) seguindo dígitos - essa parte do padrão deve ser N[0-9]\{1,\} .
Além disso, . (period) char corresponde a qualquer caractere, incluindo nova linha (embora novas linhas não ocorram na entrada aqui). Para ser correspondido literalmente, deve ser escapado \.
Em seguida, o padrão main ficaria como /BC_CD23\.BC_B\.BC_A1\.N[0-9]\{1,\}_C/

link

    
por 06.11.2017 / 07:55