[ubuntu-ar] CONTAR PALABRAS REPETIDAS

Juan Pablo pablosarubbi at gmail.com
Sat Jun 19 16:28:57 BST 2010


El 19 de junio de 2010 09:39, Juan Pablo <pablosarubbi en gmail.com> escribió:

>
>
> El 17 de junio de 2010 09:59, Fernando Vicio <fernando_018 en hotmail.com>escribió:
>
>>  Date: Wed, 16 Jun 2010 15:20:40 -0700
>> From: danielhmaidana en yahoo.com
>> To: ubuntu-ar en lists.ubuntu.com
>> Subject: [ubuntu-ar] CONTAR PALABRAS REPETIDAS
>>
>>
>> POR FAVOR, NECESITO UN PROGRAMA QUE CUENTE LAS REPETICIONES DE CADA
>> PALABRA EN UN TEXTO.
>>
>>
>>
>> Buen día Daniel
>>
>> Tal vez esto te ayude a resolverlo:
>> http://rainbow.arch.scriptmania.com/tools/word_counter.html
>> Sería mucho más fácil si es una palabra por línea (sort MiArchivo.txt |
>> uniq -c).
>>
>> Saludos cordiales,
>> Fernando.-
>>
>> ------------------------------
>> No importa si es pesado o liviano. Con Hotmail Skydrive tenés 25 GB para
>> guardar todo. Clic aquí<http://www.descubrehotmail.com/almacenamiento.asp>
>>
>> --
>>
>> Ubuntu-ar lista de correo
>> Ubuntu-ar en lists.ubuntu.com
>> Modifica tus opciones o desuscribite en:
>> https://lists.ubuntu.com/mailman/listinfo/ubuntu-ar
>> Siempre leer, comprender y aplicar nuestra etiqueta:
>> https://wiki.ubuntu.com/ArgentinaTeam/EtiquetaML
>>
>>
>>
> y me estoy poniendo viejo, pero con awk lo podes resolver así:
>
> # Imprime palabras y sus repeticiones: contarPalabras.awk
> # Procesar con :
> # awk  -f contarPalabras.awk archivo.txt
>
> BEGIN {}
>
> { for (i=1; i<=NF; i++) # NF es el número de campos en el registro actual.
>      words[tolower($i)]++
> }
>
> END { for (i in words)
>     print i, words[i]
> }
>
>
> Si necesitas ordenarlo o algo mas podes pipearlo con sort o cut o cambiar
> la línea print i, words[i] por print words[i], i
>
> Saludos
>
>
> --
>  Juan Pablo Sarubbi
> Licenciado en Sistemas
>
> Google Talk: pablosarubbi#gmail com
> MSN: pablosarubbi#hotmail com
> Skype: pablosarubbi
> Blog: pablosarubbi.blogspot.com
> Public Key: D0E8 F172 1DA6 C9C4 35D2  98A6 38A3 31F6 2183 D44A
>


y como estaba aburrido, me puse a combinar comandos linux:

sed ejecuta una expresion regular, \s es un espacio en blanco, \n un salto
de linea y /g para que se haga global
sort ordena un archivo y con -n trata a los numeros como numeros :p
uniq hace que la lista no se repita y con -c te genera una columna con la
cantidad de veces que se repite cada palabra.

Entonces desde la linea de comandos quedaria algo así:

sed 's/\s/\n/g' archivo.txt | sort | uniq  -c | sort -n

Saludos


-- 
 Juan Pablo Sarubbi
Licenciado en Sistemas

Google Talk: pablosarubbi#gmail com
MSN: pablosarubbi#hotmail com
Skype: pablosarubbi
Blog: pablosarubbi.blogspot.com
Public Key: D0E8 F172 1DA6 C9C4 35D2  98A6 38A3 31F6 2183 D44A
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://lists.ubuntu.com/archives/ubuntu-ar/attachments/20100619/e4c81bee/attachment.htm 


More information about the Ubuntu-ar mailing list