Helton, esse getopts ao qual o Law se referiu, está super explicado aqui<http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo010#Comando_getopts> . Abraços, Julio Cursos de Shell e Zenity em 2 fins de semana? - Aracaju turma de Shell em 12/05 - [email protected]; - 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 [email protected]; - Turmas fechadas em outras cidades ligue (21)8112-9988.
Em 10 de maio de 2010 19:17, Lawrence Waclawiak <[email protected]>escreveu: > 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 <[email protected] > >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 - [email protected]; > >> - 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 [email protected]; > >> - Turmas fechadas em outras cidades ligue (21)8112-9988. > >> > >> > >> Em 10 de maio de 2010 16:47, Helton Moraes <[email protected]> > >> 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 <[email protected] > >>> > >>>> 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 - [email protected]; > >>>> - 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 [email protected]; > >>>> - Turmas fechadas em outras cidades ligue (21)8112-9988. > >>>> > >>>> > >>>> Em 10 de maio de 2010 14:24, Helton Moraes <[email protected]> > >>>> 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: [email protected] > >>>> --------------------------------------------------------------------- > >>>> 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: [email protected] > >>> --------------------------------------------------------------------- > >>> 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: [email protected] > >> --------------------------------------------------------------------- > >> 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: [email protected] > > --------------------------------------------------------------------- > > 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: [email protected] > --------------------------------------------------------------------- > 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: [email protected] --------------------------------------------------------------------- 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: [email protected] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
