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



» Screenshot
Linux: m1dnight - primeiro !!
Por rfranzen
» Login
Login:
Senha:

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

Esqueci minha senha

» Wallpaper
Linux: Kurumin Brilhando
Por rychardi

Comunidades

Comunidade Linux Home Participar da comunidade Linux Participar Fórum Linux Fórum Membros LinuxMembros

<< Anterior Próxima >>

limpando texto [RESOLVIDO]

Linux user: Emerson Piussi
piussi

(usa CentOS)
[1] Enviado em 03/07/2009 - 17:43h:
limpando texto [RESOLVIDO]

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.
 

  
Linux user: Renato Carneiro Pacheco
renato_pacheco

(usa Slackware)
[2] 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.
 

Linux user: Emerson Piussi
piussi

(usa CentOS)
[3] 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
 

Linux user: Marcos Paulo
daemonio

(usa Slackware)
[4] Enviado em 03/07/2009 - 18:21h:
Sed

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
 

Linux user: Emerson Piussi
piussi

(usa CentOS)
[5] 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.
 

Linux user: Marcos Paulo
Daemonio

(usa Slackware)
[6] Enviado em 03/07/2009 - 19:03h:
SeD

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
 

Linux user: Emerson Piussi
piussi

(usa CentOS)
[7] 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?
 

Linux user: Marcos Paulo
Daemonio

(usa Slackware)
[8] Enviado em 03/07/2009 - 20:43h:


Tá blz, te mando um email pelo vol.

Flw
 

Linux user: M4iir1c10
m4iir1c10

(usa Slackware)
[9] Enviado em 03/07/2009 - 21:51h:
segue o comando

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.
 

  
<< Anterior Próxima >>
Responsável pelo site: Fábio Berbert de Paula - Copyleft 2002-2009 Viva o Linux.com.br

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.