+ Responder ao Tópico



  1. #1

    Padrão Remover palavras com menos de 3 caracteres?

    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!

  2. #2

    Padrão

    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.

  3. #3

    Padrão

    ia ser excelente =))

    jah abusando podia fazer pra tirar tambem palavras com mais de 12 caracteres ?

    valewwww =]

  4. #4

    Padrão

    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??

  5. #5

    Padrão

    remover palavras com menos de 3 e com mais de 12 caracteres

    isso vai rodar no meu ubuntu desktop mesmo
    core2duo 2gb

    =]]

  6. #6

    Padrão

    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...

  7. #7

    Padrão

    sobrescreva =]]

  8. #8

    Padrão

    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...
    Arquivos Anexos Arquivos Anexos
    Última edição por Magnun; 14-11-2008 às 12:24.

  9. #9

    Padrão

    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

  10. #10

    Padrão

    a parte da pontuacao ta otimo pra mim assim =]

    pq tem palavras q podem ter ponto ou virgula

    =DD

  11. #11

    Padrão

    manda so o ./remover_palavras...
    Posta ai saída ai...

    Essa mensagem de pasta é do sistema, não é do script

  12. #12

    Padrão

    mesma coisa

    fazendo:
    ./remover_palavras.py situacao.txt 3 12
    ou soh
    ./remover_palavras.py

    da:

    : Arquivo ou diretorio inexistente

  13. #13

    Padrão

    Opa, foi mal pela demora!

    testa assim:
    python remover_palavras.py

  14. #14

    Padrão

    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...

  15. #15

    Padrão

    Magnun deu certinhooo!! =D

    valew demais pelo apoio =]

    UL rulez!

  16. #16

    Padrão

    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:

    Código :
    sed -e "s/\(^\| \)[!-þ\;]\{1,3\}\($\| \)/ /g"
    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 :
    s/\(^\| \)[!-þ\;]\{1,3\}\($\| \)/ /g
    s/\(^\| \)[!-þ\;]\{1,3\}\($\| \)/ /g
    s/\(^\| \) \+/\1/g
    /^$/D
    e então:

    Código :
    sed -f [arquivo expr] [arquivo a ser subsituido]
    se quiser alterar o arquivo diretamente ao invés de mostrar no stdou simplesmente adicione o argumento "-i"

    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

  17. #17

    Padrão

    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!!