Opa..
eu tenho um txt e eu queria que todas as palavras com menos de 3 caracteres fossem apagadas!
Tem algum comando pra fazer isso?
valew!
Opa..
eu tenho um txt e eu queria que todas as palavras com menos de 3 caracteres fossem apagadas!
Tem algum comando pra fazer isso?
valew!
Posso fazer um script em python pra isso, pode ser?!
Só confirmando, remover palavras que possuem menos que 3 characteres ou remover palavras que possuem 3 ou menos caracteres?
Última edição por Magnun; 14-11-2008 às 09:27.
ia ser excelente =))
jah abusando podia fazer pra tirar tambem palavras com mais de 12 caracteres ?
valewwww =]
Blz, tive uma ideia... Vou fazer mais que isso!
Mas faço a mesma pergunta...
Palavras com mais de 12 caracteres ou com 12 ou mais caracteres???
Isso vai rodar num servidor?? Ou desktop??
remover palavras com menos de 3 e com mais de 12 caracteres
isso vai rodar no meu ubuntu desktop mesmo
core2duo 2gb
=]]
Só mais uma coisa, você prefere que ele sobrescreva o arquivo original ou gere outro arquivo?
Perguntei a questão do servidor ou desktop por causa da interface gráfica...
Pronto cara...
Criei o script com o nome de remover_palavras.py. Como to colocando aqui como anexo tive que alterar a extensão para .txt porque aqui não aceita a extensão .py... Então você vai ter que alterar a extensão... Ah, certifique-se que vc tem o python instalado.
Mudando a extensão pra .py:
$ mv remover_palavras.txt remover_palavras.py
De permissão de execução:
$ chmod 775 remover_palavras.py
Sintaxe:
$ ./remover_palavras.py nome_do_arquivo menor maior
Esse script usa 3 argumento. Um é o nome do arquivo que contem o texto que você quer que seja analisado. O 'menor' é um número que indica o comprimento da menor palavra aceitável. O 'maior' é o comprimento da menor palavra aceitável. Se quiser ver a sintaxe e uma breve explicação só chamar o script sem nenhum argumento
Um exemplo:
$ ./remover_palavras teste.txt 3 12
Ele vai remover do arquivo teste.txt as palavras com menos de 3 caracteres e com mais de 12.
Fiz dessa forma pra caso vc precise de outros limites vc não precisar alterar o script.
Só tem um bug nesse script. Frases com pontuação... Como por exemplo:
"este e um teste."
O script vai considerar "teste.", ou seja 6 carcteres... Ainda to bolando um jeito de contornar isso...
Testa ai e vê se te atende...
Qualquer coisa posta ai...
Última edição por Magnun; 14-11-2008 às 12:24.
Eu rodei aqui assim
sudo ./remover_palavras.py situacao.txt 3 12
ele retorna Arquivo ou diretorio inexistente!
o arquivo de texto esta na mesma pasta do seu script
eu dei o chmod tbm
dei um apt-get install python mais ja consta como versao mais nova instalada
sabe onde eu comi bola!?
valewwww =D
a parte da pontuacao ta otimo pra mim assim =]
pq tem palavras q podem ter ponto ou virgula
=DD
manda so o ./remover_palavras...
Posta ai saída ai...
Essa mensagem de pasta é do sistema, não é do script
mesma coisa
fazendo:
./remover_palavras.py situacao.txt 3 12
ou soh
./remover_palavras.py
da:
: Arquivo ou diretorio inexistente
Opa, foi mal pela demora!
testa assim:
python remover_palavras.py
Cara, muito estranho...
Agora que estou em casa testei no meu ubuntu. descobri um erro mas aparentemente não é só isso. Acho que tem algum problema relacionado a codificação de arquivos feitos em windows (no meu trabalho) rodando em linux.
Executa como eu disse ai em cima:
$ python remover_palavras
Se ele mostrar um texto com a utilização ta ok. Ai vc pode usar ele do mesmo jeito que expliquei antes, mas ao invés de ./remover_palavras você chama com 'python remover_palavras'. Os arguentos funcionam do mesmo modo:
$ python remover_palavras teste.txt 3 12
Qualquer coisa posta ai...
Magnun deu certinhooo!! =D
valew demais pelo apoio =]
UL rulez!
A GNU ja oferece por padrão junto com o linux uma série de mini-utilitários que podem ser usados para os mais diversos fins, ao invés de fazer um script poderia ser utilizado o sed também, não descartando o método fornecido pelo magnum pois é muito útil para fins didáticos.
Apenas com um conjunto de seds é possível resolver esse problema com pouco esforço:
ou para deixar o texto mais limpo sem espaços duplicados e linhas em branco é só gravar as seguintes linhas em um arquivo:Código :sed -e "s/\(^\| \)[!-þ\;]\{1,3\}\($\| \)/ /g"
e então:Código :s/\(^\| \)[!-þ\;]\{1,3\}\($\| \)/ /g s/\(^\| \)[!-þ\;]\{1,3\}\($\| \)/ /g s/\(^\| \) \+/\1/g /^$/D
se quiser alterar o arquivo diretamente ao invés de mostrar no stdou simplesmente adicione o argumento "-i"Código :sed -f [arquivo expr] [arquivo a ser subsituido]
sendo que:
1º Linha: Remove todas as palavras com 3 caracteres ou menos
2º Linha: faz o mesmo que a primeira, completando o seu efeito pois a expressão fornecida trabalha de forma intercalada
3º Linha: Remove espaços duplicados e no ínicio/fim da linha
4º Linha: Remove linhas em branco.
A[]'s
Cara, eu acho o sed uma das ferramentas mais FODÁSTICAS do linux, mas nunca fui muito bom nele. Só sei fazer substituições básicas... To até agora tentando entender a regex que você usou mas não consigo... Ai, geralmente, por preguiça de pesquisar prefiro fazer um script em python, porque acho python tão intuitivo que chega a parecer que estou escrevendo a lógica do programa ao invés do código
De qualquer forma obrigado por contribuir com o tópico!!