Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Básico » Agrupamiento por el campo 7  RESUELTO Responder al tema
Nuevo tema


Página 1 de 1  [ 7 mensajes ] 
 
Nota 2012-02-07 18:03 @794

Perlero Nuevo
Registrado: 2012-01-31 15:55 @705
Mensajes: 25
Agrupamiento por el campo 7
Muestra el total de usuarios por contenidos diferentes del campo 7.

Es decir, un agrupamiento por cada contenido y el número de veces que se repite cada contenido. Por ejemplo con el fichero passwd:
Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
bin/false: 6
bin/sh: 5
bin/bash: 4


Tengo hecho esto, creo que con un hash se podría hacer pero no sé cómo hacerlo.
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. open(F1, "@ARGV[0]") or die "No existe el fichero";
  2. while ($linea=<F1>) {
  3.         chomp $linea;
  4.         @x = split(/:/,$linea);
  5.            
  6. close F1;
  7.  


Nota 2012-02-07 18:29 @811
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Re: Agrupamiento por el campo 7
Se trata de llevar una cuenta de cuántas veces aparece repetido el campo 7.

Con un hash puedes ir acumulando los campos, usando las claves como índices a los distintos campos, y los valores, las veces que aparecen.

Es algo que se hace muchas veces con los hash. En estos foros tienes centenares de ejemplos. También tienes un tutorial al respecto.

_________________
JF^D Perl programming


Nota 2012-02-07 18:56 @830

Perlero Nuevo
Registrado: 2012-01-31 15:55 @705
Mensajes: 25
Re: Agrupamiento por el campo 7
Vale pero, ¿cómo creo ese hash? Teniendo en cuenta que el campo es $x[6], después habría que hacer un foreach(), ¿no?


Nota 2012-02-07 19:09 @839
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Re: Agrupamiento por el campo 7
Claro, una vez hecho el conteo, necesitas un bucle más, para sacar las claves y los valores, de la forma en que quieres sacar los resultados. El foreach() lo debes hacer entonces por keys %hash.

_________________
JF^D Perl programming


Nota 2012-02-07 19:12 @842

Perlero Nuevo
Registrado: 2012-01-31 15:55 @705
Mensajes: 25
Re: Agrupamiento por el campo 7
Vale, ¿y sería %hash=$x[6]?


Nota 2012-02-08 05:24 @266
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Re: Agrupamiento por el campo 7
Si $x[6] contiene el nombre del shell, que queremos que sea la clave, entonces debemos escribirlo así:

$hash{$x[6]}++; # incrementamos en uno las veces que aparece la shell que está en $x[6]

Te recomiendo leer perldata (traducido).

_________________
JF^D Perl programming


Nota 2012-02-08 11:15 @510

Perlero Nuevo
Registrado: 2012-01-31 15:55 @705
Mensajes: 25
Re: Agrupamiento por el campo 7  RESUELTO
¡Resuelto! Muchísimas gracias.


Responder al tema  [ 7 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO