Para remover apenas os caracteres:
.!?,'/\"()[]^*
Use uma classe de caracteres como esta:
[][.!?,'/\"()^*]
Observe que o caractere ]
deve ser primeiro. Além disso, o ^
não pode ser o primeiro, pois isso significaria algo totalmente diferente. E a barra invertida escapou.
Agora, para realmente usar esta classe de caracteres, você tem que levá-lo para Sed. Uma maneira de fazer isso é colocar
s/[][.!?,'/\"()^*]\+//g
em um arquivo e chame-o com sed -f scriptfile input.txt
.
Outra maneira (mais complicada) é usar aspas de shell:
sed -e 's/[][.!?,'\''/\"()^*]\+//g' input.txt
Para a outra parte da sua pergunta, não há como combinar todos os caracteres em uma classe de caracteres exceto certos caracteres listados.
Você pode, no entanto, corresponder a todos os caracteres de pontuação NÃO assim:
[^[:punct:]]