Como remover caracteres no meio de uma string no bash


12

No bash, tenho uma string e estou tentando remover um caractere no meio da string. Eu sei que podemos remover caracteres do início ou do fim de uma string como esta:

myVar='YES'
myVar="${myVar#'Y'}"
myVar="${myVar%'S'}"

mas como posso remover a do meio?

Respostas:


18

Se você souber quais caracteres remover, poderá usar a substituição na expansão de parâmetros:

myVar=${myVar/E}  # Replace E with nothing

Ou, se você souber quais caracteres manter:

myVar=${myVar/[^YS]}  # Replace anything but Y or S

Ou, se você conhece a posição:

myVar=${myVar:0:1}${myVar:2:1}  # The first and third characters

E se você também não souber? E se você apenas souber que deseja manter Y e S?
Rutger Huijsmans

@RutgerHuijsmans: Verifique a atualização.
1828 chorora
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.