• Publicidad

Agrupamiento por el campo 7

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Agrupamiento por el campo 7

Notapor alesevimor » 2012-02-07 18:03 @794

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:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
bin/false: 6
bin/sh: 5
bin/bash: 4
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Tengo hecho esto, creo que con un hash se podría hacer pero no sé cómo hacerlo.
Sintáxis: [ Descargar ] [ Ocultar ]
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.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
alesevimor
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705

Publicidad

Re: Agrupamiento por el campo 7

Notapor explorer » 2012-02-07 18:29 @811

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 & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Agrupamiento por el campo 7

Notapor alesevimor » 2012-02-07 18:56 @830

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?
alesevimor
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705

Re: Agrupamiento por el campo 7

Notapor explorer » 2012-02-07 19:09 @839

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 & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Agrupamiento por el campo 7

Notapor alesevimor » 2012-02-07 19:12 @842

Vale, ¿y sería %hash=$x[6]?
alesevimor
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705

Re: Agrupamiento por el campo 7

Notapor explorer » 2012-02-08 05:24 @266

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 & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Agrupamiento por el campo 7

Notapor alesevimor » 2012-02-08 11:15 @510

¡Resuelto! Muchísimas gracias.
alesevimor
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 14 invitados