Até onde eu sei, a única maneira de fazer isso nas versões atuais de bash
é em duas etapas, por exemplo,
$ string="Mark Shuttleworth"
$ string="${string//a/o}"; echo "${string//t/g}"
Mork Shuggleworgh
As tentativas de anular as substituições resultam em um erro:
$ echo "${${string//a/o}//t/g}"
bash: ${${string//a/o}//t/g}: bad substitution
Note que outros invólucros podem suportar tais substituições aninhadas, por ex. em zsh 5.2
:
~ % string="Mark Shuttleworth"
~ % echo "${${string//a/o}//t/g}"
Mork Shuggleworgh
É claro que ferramentas externas como tr
, sed
, perl
podem fazer isso facilmente
$ sed 'y/at/og/' <<< "$string"
Mork Shuggleworgh
$ perl -pe 'tr /at/og/' <<< "$string"
Mork Shuggleworgh
$ tr at og <<< "$string"
Mork Shuggleworgh