Envolva um padrão, não alterando-o, enquanto procura insensivelmente maiúsculas e minúsculas

0

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.

    
por pfo 19.11.2015 / 18:43

2 respostas

0

Você também pode fazer isso com sed .

echo $STRING | sed -e "s/\($PATTERN\)/[]/Ig"
    
por 19.11.2015 / 19:16
0

Se você não se importa com o Perl, é:

echo $STRING | perl -pe "s/($PATTERN)/[]/ig"
    
por 19.11.2015 / 18:46