Você também pode fazer isso com sed .
echo $STRING | sed -e "s/\($PATTERN\)/[]/Ig"
Desculpe se isso foi perguntado antes, mas não encontrei nada até agora.
Aqui está a coisa: eu tenho uma string e um padrão, e quero cercar o padrão dentro da string com colchetes.
Embora eu queira cercar o padrão, independentemente de ter sido correspondido com distinção entre maiúsculas e minúsculas, quero tê-lo no mesmo caso em que estava na string original.
Aqui está minha melhor tentativa até agora:
#!/bin/bash
STRING="ABCBD"
PATTERN="b"
echo $STRING | sed "s/$PATTERN/[$PATTERN]/Ig"
A saída para isso é A[b]C[b]D . No entanto, gostaria que fosse A[B]C[B]D .
Se o padrão for B em vez de b , a saída também deverá ser A[B]C[B]D .
Se a string fosse abcbd em vez de ABCBD , a saída deveria ser a[b]c[b]d para ambos os padrões B ou b .
Você conhece algum truque para conseguir isso? Fico feliz por qualquer ajuda.
Se você não se importa com o Perl, é:
echo $STRING | perl -pe "s/($PATTERN)/[]/ig"