Amigo, com certeza você pode criar uma opção no seu script para adicionar as palavras na lista "negra" porém a idéia de adicionar essas palavras no próprio script(Carregar em uma variável) não me parece ser uma boa idéia pois além de trabalhoso seria perigoso e desnecessário. Seria muito mais simples e eficiente vc criar um arquivo adicional para cada tipo de lista que deseje criar.
Para fazer o esquema de "--include palavra" pesquise a respeito do getopts, com ele vc pode passar vários parametros identificados para o teu script e tomar decisões de como proceder dependendo de qual parâmetro foi passado. Abraços Helton Moraes escreveu: > Dando continuidade a algo que poderá crescer, crescer... > > Julio, então estou pensando em fazer o seguinte (só que obviamente preciso > de uma luz): > > 1) incluir a lista de palavras num determinado trecho do próprio arquivo do > script 'statex'; > 2) incluir uma opção que edita o próprio arquivo (isso existe?). > > assim, se eu quisesse incluir a palavra <para> na lista negra, usaria algo > do tipo > > statex --include para > > novamente, pergunto: isso existe? (opção que altera o próprio script)? > > Obrigado > > Helton (lembrando sempre que em shell não se pergunta se tem como fazer, e > sim como é que se faz :oP) > > > > > Em 10 de maio de 2010 17:24, Julio C. Neves <julio.ne...@gmail.com>escreveu: > > >> Helton, >> eu não limitaria em palavras maiores de 5 caracteres. Eu criaria um arquivo >> chamado MenosEssas que teria todas as palavras que vc não quer como do, da, >> que, de, o, a, ..., todas antecedidas por um ^ e sucedidas por um $. >> >> Cada vez que vc encontrar uma palavra indesejada, basta inclui-la no >> arquivo >> e reprocessar. >> >> Nesse caso tire aquele aquele trecho de código que tem o limitador {5} e >> insira antes de contar (para não perder tempo contando e classificando >> atoa) >> o trecho a seguir: >> >> grep -vf MenosEssas >> >> Outra coisa que vc não pensou é em palavras com hífen e as mesmas palavras >> no singular e plural. >> >> Abraços, >> Julio >> Cursos de Shell e Zenity em 2 fins de semana? >> - Aracaju turma de Shell em 12/05 - andersonriz...@gmail.com; >> - DF turma de Shell em 12/06 - ligue (61)3223-3000; >> - RJ turma de Shell em 14/06 - ligue (21)2210-6061; >> - Floripa turma de Shell e Zenity 12/07 – el...@7seven.com.br; >> - Turmas fechadas em outras cidades ligue (21)8112-9988. >> >> >> Em 10 de maio de 2010 16:47, Helton Moraes <heltonbi...@gmail.com> >> escreveu: >> >> >>> Buenas! >>> >>> Juntando as dicas que me mandaram, e acrescentando mais algumas opções >>> cômodas, o script STATEX (statistics of text ;o) ficou assim (vai que >>> >> seja >> >>> útil pra mais alguém...): >>> >>> tr -s "[:punct:] " "\n" <FlyerVert.txt | tr "[:upper:]" "[:lower:]" |\ >>> sort | uniq -c | sort -gr | grep -E '[\ ]+[0-9][0-9]*\ [[:alpha:]]{5}' >>> >> |\ >> >>> head -n 20 >>> >>> comentários: >>> tr -s > colapsa caracteres consecutivos ([:punct:] pega tudo que é >>> pontuação) >>> tr "[:upper:]" "[:lower:]" > troca maiúsculas por minúsculas; >>> sort -gr > o -g é pra que ele ordene por ordem numérica, e o r para que >>> venha a ordem numérica ao contrário (decrescente); >>> grep > ali no meio tem um {5}, que foi o valor que escolhi para tamanho >>> mínimo de palavra (senão as mais frequentes são sempre e, os, as, de, >>> >> por, >> >>> para, etc.). A regex pega algum número seguido de um espaço seguido de >>> >> uma >> >>> palavra com 5 caracteres, na ordem que veio do sort >>> head > mostra só os resultados mais importantes (os primeiros) >>> >>> notar que pro tr a sintaxe é [:class:] enquanto pro grep é [[:class:]] >>> (haja >>> atenção...). >>> >>> evidentemente a cereja no bolo é trocar o '5' e o '20' por $2 e $3, >>> deixando >>> o $1 para o nome de arquivo, e salvar como um script que aceite >>> >> parâmetros. >> >>> Desculpem se fui muito elementar >>> >>> Helton >>> >>> >>> >>> Em 10 de maio de 2010 14:56, Julio C. Neves <julio.ne...@gmail.com >>> >>>> escreveu: >>>> >>>> Fala Helton, >>>> acho que vc queria fazer: >>>> $ echo "$Var" >>>> o problema é que o resultado digo o resultado repito o resultado >>>> >> aparece >> >>>> assim >>>> $ tr ' ' '\n' <<< $Var | sort | uniq -c | sort -r >>>> 4 o >>>> 3 resultado >>>> 1 repito >>>> 1 que >>>> 1 problema >>>> 1 é >>>> 1 digo >>>> 1 assim >>>> 1 aparece >>>> >>>> Porém existem outras soluções: >>>> 1 - Usando Arrays Associativas, a partir do Bash 4.0 >>>> $ for palavra in $Var; do let palavras[$palavra]++; done >>>> $ paste <(echo ${palavr...@]} | xargs -n1) <(echo ${!palavr...@]} | >>>> >> xargs >> >>>> -n1) >>>> 1 digo >>>> 1 que >>>> 1 repito >>>> 3 resultado >>>> 1 assim >>>> 1 é >>>> 4 o >>>> 1 aparece >>>> 1 problema >>>> >>>> 2- Usando awk: >>>> awk '{ >>>> for (w = 1; w <= NF; w++) conta[$w] ++ >>>> } >>>> END { >>>> for (w in conta) print conta[w], w | "sort -nr" >>>> }' /arquivo/que/deseja/contar >>>> >>>> Abraços, >>>> Julio >>>> Cursos de Shell e Zenity em 2 fins de semana? >>>> - Aracaju turma de Shell em 12/05 - andersonriz...@gmail.com; >>>> - DF turma de Shell em 12/06 - ligue (61)3223-3000; >>>> - RJ turma de Shell em 14/06 - ligue (21)2210-6061; >>>> - Floripa turma de Shell e Zenity 12/07 – el...@7seven.com.br; >>>> - Turmas fechadas em outras cidades ligue (21)8112-9988. >>>> >>>> >>>> Em 10 de maio de 2010 14:24, Helton Moraes <heltonbi...@gmail.com> >>>> escreveu: >>>> >>>> >>>>> Caros colegas >>>>> >>>>> Primeiramente, caso alguém conheça alguma técnica ou programa ou >>>>> >> script >> >>>>> pronto (link) para o que estou tentando fazer, aceito a sugestão! >>>>> >> Vamos >> >>>> lá: >>>> >>>>> Estou encarregado de dar uma melhorada no estilo de um texto >>>>> >>>> publicitário, >>>> >>>>> e >>>>> como bom nerd pretendo usar o shell para isso, contando as palavras >>>>> repetidas de um arquivo de texto. Para isso, tentei usar um oneliner >>>>> >>> com >>> >>>> a >>>> >>>>> seguinte sequência: >>>>> >>>>> cat (carrega o arquivo) >>>>> tr (trocar espaços por novas linhas \n) >>>>> uniq -ci (contar as linhas repetidas ignorando maiúscula/minúscula) >>>>> sort -r (para que as palavras mais frequentes apareçam na parte baixa >>>>> >>> do >>> >>>>> terminal assim que eu der ENTER) >>>>> >>>>> ficou assim: >>>>> >>>>> cat /home/helton/Desktop/test.txt | tr " " "\n" | uniq -c | sort -r >>>>> >>>>> O PROBLEMA é que o resultado é como o seguinte: >>>>> >>>>> 1 o >>>>> 1 problema >>>>> 1 é >>>>> 1 que >>>>> 1 o >>>>> 1 resultado >>>>> 1 digo >>>>> 1 o >>>>> 1 resultado >>>>> 1 repito >>>>> 1 o >>>>> 1 resultado >>>>> 1 aparece >>>>> 1 assim >>>>> >>>>> ou seja, mesmo que tenha palavras repetidas no arquivo ele aparece >>>>> >> uma >> >>>>> ocorrência por linha precedido do 1. >>>>> >>>>> Então, como bom pai (do script), pergunto: "onde foi que eu errei?" >>>>> >>>>> Obrigado >>>>> >>>>> Helton >>>>> >>>>> [As partes desta mensagem que não continham texto foram removidas] >>>>> >>>>> >>>>> >>>>> >>>> [As partes desta mensagem que não continham texto foram removidas] >>>> >>>> >>>> >>>> ------------------------------------ >>>> >>>> --------------------------------------------------------------------- >>>> Esta lista não admite a abordagem de outras liguagens de programação, >>>> >>> como >>> >>>> perl, C etc. Quem insistir em não seguir esta regra será moderado sem >>>> >>> prévio >>> >>>> aviso. >>>> --------------------------------------------------------------------- >>>> Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br >>>> --------------------------------------------------------------------- >>>> Esta lista é moderada de acordo com o previsto em >>>> http://www.listas-discussao.cjb.net >>>> --------------------------------------------------------------------- >>>> Servidor Newsgroup da lista: news.gmane.org >>>> Grupo: gmane.org.user-groups.programming.shell.brazil >>>> >>>> Links do Yahoo! Grupos >>>> >>>> >>>> >>>> >>> [As partes desta mensagem que não continham texto foram removidas] >>> >>> >>> >>> ------------------------------------ >>> >>> --------------------------------------------------------------------- >>> Esta lista não admite a abordagem de outras liguagens de programação, >>> >> como >> >>> perl, C etc. Quem insistir em não seguir esta regra será moderado sem >>> >> prévio >> >>> aviso. >>> --------------------------------------------------------------------- >>> Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br >>> --------------------------------------------------------------------- >>> Esta lista é moderada de acordo com o previsto em >>> http://www.listas-discussao.cjb.net >>> --------------------------------------------------------------------- >>> Servidor Newsgroup da lista: news.gmane.org >>> Grupo: gmane.org.user-groups.programming.shell.brazil >>> >>> Links do Yahoo! Grupos >>> >>> >>> >>> >> [As partes desta mensagem que não continham texto foram removidas] >> >> >> >> ------------------------------------ >> >> --------------------------------------------------------------------- >> Esta lista não admite a abordagem de outras liguagens de programação, como >> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio >> aviso. >> --------------------------------------------------------------------- >> Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br >> --------------------------------------------------------------------- >> Esta lista é moderada de acordo com o previsto em >> http://www.listas-discussao.cjb.net >> --------------------------------------------------------------------- >> Servidor Newsgroup da lista: news.gmane.org >> Grupo: gmane.org.user-groups.programming.shell.brazil >> >> Links do Yahoo! Grupos >> >> >> >> > > > [As partes desta mensagem que não continham texto foram removidas] > > > > ------------------------------------ > > --------------------------------------------------------------------- > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > --------------------------------------------------------------------- > Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br > --------------------------------------------------------------------- > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > --------------------------------------------------------------------- > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > > > ------------------------------------ --------------------------------------------------------------------- Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. --------------------------------------------------------------------- Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: shell-script-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html