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
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.
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
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
Tags command-line bash shell