Linux slogan
Visite também: BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: navegando pelo XPDE
Por manidoca
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Comunidades

Comunidade Linux Home Participar da comunidade Linux Participar Fórum Linux Fórum Membros LinuxMembros RSS do fórum

<< Primeira | Anterior Próxima | Última >>

limpando texto [RESOLVIDO]

[1] Enviado em 03/07/2009 - 17:43h limpando texto [RESOLVIDO]
Linux user: Emerson Piussi
piussi

(usa CentOS)


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]
Linux user: Renato Carneiro Pacheco
renato_pacheco

(usa Slackware)


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] Enviado em 03/07/2009 - 18:14h Re: limpando texto [RESOLVIDO]
Linux user: Emerson Piussi
piussi

(usa CentOS)


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] Enviado em 03/07/2009 - 18:21h Sed
Linux user: Marcos Paulo Ferreira
daemonio

(usa Slackware)


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]
Linux user: Emerson Piussi
piussi

(usa CentOS)


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] Enviado em 03/07/2009 - 19:03h SeD
Linux user: Marcos Paulo Ferreira
Daemonio

(usa Slackware)


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]
Linux user: Emerson Piussi
piussi

(usa CentOS)


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

 

[8] Enviado em 03/07/2009 - 20:43h Re: limpando texto [RESOLVIDO]
Linux user: Marcos Paulo Ferreira
Daemonio

(usa Slackware)


Tá blz, te mando um email pelo vol.

Flw

 

[9] Enviado em 03/07/2009 - 21:51h segue o comando
Linux user: M4iir1c10
m4iir1c10

(usa Arch Linux)


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.

 

  
<< Primeira | Anterior Próxima | Última >>
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.