Ola Pessoal, preciso de um socorro, preciso limpar um arquivo texto, ele contem caracteres especiais "³ Ä A À....." quero deixar somente caracteres a-z 0-9 A-Z e alguns mais ". - %$#@!....".
Com o sed eu consigo trocar os caracteres, porem ao usar o vi para editar o script o mesmo fica bagunçado ao digitar estes caracteres especiais.
Tem como eu retornar somente os caracteres que citei, e os demais desprezar?
Desde Ja grato.
[2] Enviado em 03/07/2009 - 17:52h Re: limpando texto [RESOLVIDO]
caro Renato, o grep retornará a linha que contenha o caracter gostaria de retornar os caracteres a-zA-Z...., e alem do mais eu não consigo digitar estes caracteres no vi, mesmo assim grato pela atençao
Ok, acho que os caracteres que você quer que apareça estão entre ! e ~ na tabela ASCII, então, usando o sed é só remover os caracteres que não estão nesse intervalo.
$ sed 's@[^!-~]@@g' arquivo.txt
[5] Enviado em 03/07/2009 - 18:48h Re: limpando texto [RESOLVIDO]
Caro Demonio, foi quase, so que assim o sed retornou todos os caracteres que eu não quero, e os que quero ignorou, so não consegui alterar para vazer o contrario.
Bem, nesse código que eu coloquei acima, o sed irá substituir todos caracteres que NÃO estão no intervalo de ! à ~. Esse intervalo inclui todas as letras, números e pontuações.
Se você quer ao contrário, é só remover o '^' de dentro do []:
$ sed 's@[^!-~]@@g' arquivo.txt # Remove quem não está entre ! e ~
$ sed 's@[!-~]@@g' arquivo.txt # Remove quem está entre ! e ~
Pelo que entendi a primeira opção deveria ter funcionado, pois é ela que remove todos os caracteres especiais. De qualquer forma, tenta aí e mande um reply se puder.
[]'s
[7] Enviado em 03/07/2009 - 19:16h Re: limpando texto [RESOLVIDO]
diz se isso resolveu, no momento eu nao estou no meu Linux para testar o comando, estou respondendo de cabeça... porem vou verificar a sintese do comando depois no meu Linux, estou 98% certo que essa sintese e correta.