limpando texto [RESOLVIDO]

1. limpando texto [RESOLVIDO]

Emerson Piussi
piussi

(usa CentOS)

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.




2. Re: limpando texto [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Slackware)

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]

Emerson Piussi
piussi

(usa CentOS)

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

Marcos Paulo Ferreira
daemonio

(usa Slackware)

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]

Emerson Piussi
piussi

(usa CentOS)

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

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

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]

Emerson Piussi
piussi

(usa CentOS)

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]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

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

Tá blz, te mando um email pelo vol.

Flw


9. segue o comando

M4iir1c10
m4iir1c10

(usa Arch Linux)

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.