Adicione um g
ao seu regexp, para substituição global. Caso contrário, apenas a primeira ocorrência será substituída:
sed s/\!//g myfile
Eu tenho um arquivo que tem uma única linha com muitos caracteres !
. Desejo remover todos os caracteres !
.
Eu tentei isso:
sed s/!// myfile
e isso:
sed 's/!//' myfile
e isso:
sed 's/"\!*"//' myfile
Mas todos eles apenas imprimem todos os "!".
Eu devo estar perdendo algo óbvio. Alguma idéia?
Tente isto:
$ sed s/\!//g myfile
Não se esqueça do coitado antigo tr
tr -d '!' < filename
tr só opera em stdin, então você tem que enviar dados para ele.
adicione o g no final para substituir todas as ocorrências.
sed 's / "! *" // g' myfile
Você precisa especificar que deseja que todas as ocorrências sejam removidas: sed 's/!//g' myfile
Observe o g
, que significa 'ganancioso'.
Sem o 'g', você só tem o primeiro '!' removido