Dentro de [...]
, a barra invertida não é especial. [\[]
corresponde à barra invertida e [
1 .
Se você quiser incluir o caractere ]
no conjunto, verifique se ele é o primeiro: []X]
corresponde a ]
ou X
, enquanto [X]]
corresponde a X
seguido de ]
(e [X\]]
corresponderia a X
ou \
seguido de ]
). Para excluí-lo, ele precisa estar logo após ^
: [^]X]
ser qualquer caractere, mas ]
ou X
.
Então, no seu exemplo:
sed 's/[]*\#$@~!&*()[]//g'
1 Há algumas exceções para isso com o GNU sed
quando o modo de conformidade POSIX não foi ativado (via $POSIXLY_CORRECT
ou --posix
) e é por isso que, para compatibilidade com essa implementação, quando você precisar da barra invertida para ser incluída no conjunto, é melhor escrevê-la como [\]
.