Removendo “[crap-like-this]” de strings usando expansão de parâmetro bash?

1

Se eu tiver o seguinte $STRING

aaa.bbb.ccc.[ddd].eee.fff.[ggg].hhh

existe alguma maneira, usando expansão de parâmetro bash, para ecoar o seguinte

aaa.bbb..ccc.eee.fff..hhh

Ou seja, remover todas as ocorrências de colchetes e tudo dentro desses colchetes? Tudo o que eu tentei acaba removendo tudo na seqüência após o primeiro suporte esquerdo ou removendo os suportes, mas deixando para trás tudo dentro dos suportes.

    
por punchylover 10.12.2013 / 09:42

2 respostas

1

Requer shopt -s extglob :

bash-4.1# STRING='aaa.bbb.ccc.[ddd].eee.fff.[ggg].hhh'

bash-4.1# echo "${STRING//\[+([^\]])\]}"
aaa.bbb.ccc..eee.fff..hhh
    
por 10.12.2013 / 09:46
1
shopt -s extglob

STRING='[asd].aaa.bbb.ccc.[ddd].eee.fff.[ggg].hhh.[asd]'
printf '%s\n' "${STRING//@(.\[*([^]])]|\[*([^]])]?(.))/}"

daria:

aaa.bbb.ccc.eee.fff.hhh
    
por 10.12.2013 / 10:39