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

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

Re: [shell-script] contar palavras


From: Andreyev Dias de Melo
Subject: Re: [shell-script] contar palavras
Date: Mon, 06 Sep 2004 12:52:04 -0300
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040113 MultiZilla/1.6.3.1c

Joao Paulo Muller da Silva wrote:
Olá galera..

Eu preciso contar o numero de ocorrências de palavras em um arquivo texto.

Por exemplo:

eu  3
tu   4
nos 6

Fiz assim grep "palavra" arquivo.txt | wc -l, porem dessa maneira eu tenho
que colocar palavra por palavra, gostaria de saber como eu faco para em vez de colocar a palavra colocar uma variavel que receba esta palavra do arquivo e me retorne o numero de ocorrencias.

João Paulo,

O Rubens Queiroz do Dicas-l e da UNICAMP já fez isto!

#!/bin/bash

for file in *.txt
do
echo "==============================================================" >> $ file-report
echo $file > $file-report
echo "==============================================================" >> $ file-report
awk -f /home/queiroz/bin/wordcount.awk $file > $file-report
done
--------------------
A seguir, o arquivo wordcount.awk:
--------------------
{
 $0 = tolower($0)
 gsub(/``/, " ", $0)
 gsub(/''/, " ", $0)
 gsub(/[^a-z' \t]/, " ", $0)
 for (i = 1; i <= NF; i++)
  freq[$i]++
 total += NF
}

END {
  sort = "sort +1 -nr"
  for (word in freq)
   printf "%-10s\t%-10d\t%-2.3f\n",word,freq[word],(freq[word] * 100)/total | 
sort
   print "----------------------------"
   print "Total de Palavras = " total
   print "----------------------------"
}
--------------------

Veja mais em http://www.dicas-l.unicamp.br/dicas-l/20011102.shtml.

BTW, vc pode fazer isso sem o AWK, como ele diz em http://www.dicas-l.unicamp.br/dicas-l/19970311.shtml:

$ cat book*|deroff -w|dd conv=lcase|sort|uniq -c|sort -nr|more

As explicações são o 'dever de casa', mas vc pode tê-las nas URL citadas...

[]s

Andreyev


reply via email to

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