Pular para o conteúdo

limpando texto [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. limpando texto [RESOLVIDO]

Enviado em 03/07/2009 - 17:43h

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.

Responder tópico

2. Re: limpando texto [RESOLVIDO]

Enviado em 03/07/2009 - 17:52h

Eu não sei se dará certo, mas tente com o grep, dessa forma:

cat arquivo | grep -v "Ä" | grep -v "A" | grep -v "À"...

Ae eu acho q dá pra fazer um shell script ae no meio, com a função while ou for, mas eu não sei como fazer... foi mal.

3. Re: limpando texto [RESOLVIDO]

Enviado em 03/07/2009 - 18:14h

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

4. Sed

Enviado em 03/07/2009 - 18:21h

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. Re: limpando texto [RESOLVIDO]

Enviado em 03/07/2009 - 18:48h

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.

6. SeD

Enviado em 03/07/2009 - 19:03h

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. Re: limpando texto [RESOLVIDO]

Enviado em 03/07/2009 - 19:16h

não funcionou
tem alguma maneita de eu lhe enviar o arquivo para vc dar ulha olhada melhor?

8. Re: limpando texto [RESOLVIDO]

Enviado em 03/07/2009 - 20:43h

Tá blz, te mando um email pelo vol.

Flw

9. segue o comando

Enviado em 03/07/2009 - 21:51h

sed -e ':\[^\!-~\]:!d' arquivo.txt > arquivo2.txt

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.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder