• Publicidad

Muestra solo el que tiene mayor número de líneas

¿Eres administrador de sistemas? Este foro es para todos aquellos temas relacionados con el uso de Perl para administración de sistemas.

Muestra solo el que tiene mayor número de líneas

Notapor alesevimor » 2012-02-01 11:50 @535

De los ficheros que se pasan como argumento, muestra el contenido solo del que tiene
mayor número de líneas.

Es decir: alejandroubuntu@alejandroubuntu:~$ ejercico.pl argumento1 argumento2 argumento3...

argumento1: ggggggggggggg
jjjjjjjjjjjjj

argumento2: ggggggggggggg

argumento3: rrrrrrrrrrrrr
eeeeeeeeeeeee
qqqqqqqqqqqqq

Debe mostrar solo el contenido del fichero argumento3.

Gracias ;)
alesevimor
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705

Publicidad

Re: Muestra solo el que tiene mayor número de líneas

Notapor explorer » 2012-02-01 12:33 @564

No es necesario que pongas ¡Ayuda! en los títulos de los mensajes.

Si la pregunta no tiene que ver con Administración, por favor, colócala en el foro correspondiente (Básico, Intermedio, Avanzado, etc).

No nos pones nada de código, así que no sabemos dónde tienes el problema.
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12827
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Muestra solo el que tiene mayor número de líneas

Notapor alesevimor » 2012-02-01 12:46 @573

¡Ok! he pensado que este tema estaba orientado a la Administración. Y no te he puesto código porque no sé cómo plantearlo.
alesevimor
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705

Re: Muestra solo el que tiene mayor número de líneas

Notapor explorer » 2012-02-01 16:04 @711

Pues una forma de hacerlo, sería hacer un bucle por todos los argumentos (@ARGV). En cada argumento, lo abres, y lees todas las líneas (por ejemplo, en un array. El número de líneas será igual al número de elementos del array). Después de leerlo, compruebas si el número de líneas supera al récord actual (otra variable escalar que lleva el número de líneas del fichero más grande). Si es así, actualizas el récord y guardas el contenido del fichero en otro array (que es el que almacena el contenido del fichero más grande hasta ahora encontrado). Cuando termines todo el bucle principal, solo tienes que pintar ese último array.

¡Adelante!
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12827
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Muestra solo el que tiene mayor número de líneas

Notapor alesevimor » 2012-02-02 08:22 @390

Llevo intentándolo un rato y sigo sin saber por dónde cogerlo. Gracias de todos modos.
alesevimor
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705

Re: Muestra solo el que tiene mayor número de líneas

Notapor explorer » 2012-02-02 08:31 @396

Si nos muestras el código, te diremos si vas bien o no.
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12827
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Muestra solo el que tiene mayor número de líneas

Notapor alesevimor » 2012-02-07 14:13 @634

A partir de aquí no sé cómo seguir.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. for ( $i = 0; $i <= $#ARGV; $i++ ) {
  2.     $contador = 0;
  3.     open( F1, "$ARGV[$i]" ) or die "No existe el fichero";
  4.     while ( $linea = <F1> ) {
  5.         print $linea;
  6.     }
  7.  
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2012-02-07 15:06 @671, editado 1 vez en total
Razón: Formateado de código con Perltidy
alesevimor
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705

Re: Muestra solo el que tiene mayor número de líneas

Notapor explorer » 2012-02-07 15:13 @676

Pues ya casi lo tienes...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $maximo = 0;
  2. $fichero_grande = $ARGV[0];              # por defecto, el primero
  3. for ( $i = 0; $i <= $#ARGV; $i++ ) {
  4.     $contador = 0;
  5.     open( F1, $ARGV[$i] ) or die "No existe el fichero: $!\n";
  6.     while ( $linea = <F1> ) {
  7.         $contador++;
  8.     }
  9.     close F1;
  10.     if ($maximo < $contador) {           # ¿tenemos un nuevo récord?
  11.         $maximo = $contador;
  12.         $fichero_grande = $ARGV[$i];
  13.     }
  14. }
  15. open(F1, $fichero_grande);
  16. while (<F1>) {
  17.     print;
  18. }
  19. close F1;
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12827
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Muestra solo el que tiene mayor número de líneas

Notapor alesevimor » 2012-02-07 15:27 @685

Muchas gracias, ¡ahora lo entiendo! Me queda mucho que practicar ¡je,je!
alesevimor
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705


Volver a Administración

¿Quién está conectado?

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