shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Erro num script pra contar frequência das palavras


From: Julio C. Neves
Subject: Re: [shell-script] Erro num script pra contar frequência das palavras
Date: Mon, 10 May 2010 14:56:38 -0300

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 ${palavras[@]} | xargs -n1) <(echo ${!palavras[@]} | 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 - address@hidden;
- 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 – address@hidden;
- Turmas fechadas em outras cidades ligue (21)8112-9988.


Em 10 de maio de 2010 14:24, Helton Moraes <address@hidden> 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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]