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