• Publicidad

Cómo utilizar el comando "grep" en Perl

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

Cómo utilizar el comando "grep" en Perl

Notapor davids84 » 2011-02-11 09:45 @448

Hola, buen día...

Tengo una duda acerca de cómo utilizar el comando grep en un código de Perl... Tengo aquí un pequeño ejemplo de cómo lo utilicé... pero me marca un error:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open (my $fh, $ARGV[0]) or die "No se puede abrir el archivo\n";
  2.  
  3.         my $result=`grep "^>" $fh`;
  4.         print $result;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Lo que estoy intentando aquí es que me imprima la línea en donde encuentra el mayor que (">").

La versión que tengo de Perl es una versión viejita: es la 5.8.8.

¿¿¿Alguna sugerencia de cómo utilizar el comando???

¡¡Saludos!!
davids84
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2011-01-27 13:14 @593

Publicidad

Re: Cómo utilizar el comando "grep" en Perl

Notapor explorer » 2011-02-11 10:06 @462

El propio Perl tiene un comando grep{}, así que no necesitas ejecutar un comando externo.

De hecho, si lo haces, tu programa será más lento.

Si lo que quieres es quedarte con las líneas que comienzan por '>' te vale con:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open (my $fh, $ARGV[0]) or die "No se puede abrir el archivo\n";
my @result = grep { /^>/ } <$fh>;
close $fh;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Puedes mirar otras alternativas, como usar expresiones regulares, como hemos comentado hace poco en los hilos de Bioinformática Unir condiciones y Contar espacios y eliminar.
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: Cómo utilizar el comando "grep" en Perl

Notapor davids84 » 2011-02-11 10:15 @469

Hola... sí, de hecho estuve buscando en la red y más o menos encontré un ejemplo y modifiqué un poco mi cídigo... es de esta manera:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open (my $fh, $ARGV[0]) or die "No se puede abrir el archivo\n";
  2.  
  3.         my @result=grep /^>/, <$fh>;
  4.         print @result;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Mi pregunta es: el comando grep tiene una opción que es "-c" que sirve para contar cuántas veces se encontró el carácter. ¿¿¿Hay alguna manera de meter esa opción "-c" a mi código a forma de que me cuente cuántas veces me aparece el ">"????

¡¡¡¡saludos!!!!
davids84
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2011-01-27 13:14 @593

Re: Cómo utilizar el comando "grep" en Perl

Notapor explorer » 2011-02-11 10:20 @472

No debes confundir la funcionalidad de un comando externo con la de un comando interno de un lenguaje informático.

Solo tienen en común el nombre y la idea de que hacen un filtrado, pero la forma de operar con ellos es muy diferente.

Si quieres contar las veces que se ha encontrado lo que buscas, te vale con mirar el número de resultados:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "Número de líneas encontradas: ", scalar @result;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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: Cómo utilizar el comando "grep" en Perl

Notapor davids84 » 2011-02-11 10:28 @478

¡aaahhh!, Ok, ok, perfecto, si es que yo me estaba yendo con el comando que utilizamos externo... pero como lo habías comentado en líneas anteriores, Perl tiene su propia función de "grep". Pues me está siendo de mucha utilidad... De nuevo, gracias... Es un lujo estar en este foro de Perl.

¡¡¡Saludos!!!
davids84
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2011-01-27 13:14 @593

Re: Cómo utilizar el comando "grep" en Perl

Notapor davids84 » 2011-02-11 11:27 @518

Otra pregunta: ¿puedes revisar mi código...? Estoy haciendo lo mismo con la función grep, pero estoy viendo dos archivos a la vez. Voy a buscar en el archivo 1 la variable que quiero contar cuántas veces aparece en el archivo 2... Lo estoy haciendo de esta manera pero me marca un error. ¿Me puedes ayudar a ver en dónde está el error...? Tal vez sea un error muy grande porque es la primera vez que trabajo con dos archivos...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $var;
  2. open (my $fh, $ARGV[0]) or die "No se puede abrir el archivo\n";
  3.         if ($_ =~ /^isogroup[0-9]{5}\W(.*)\n/){ #aqui localizo mi busqueda
  4.         $var = $1; #la almaceno en una variable
  5.         }
  6.  
  7. my $archivo = '454Readstatus.txt';
  8. open (FH2, $archivo) or die "No se puede abrir el archivo\n";
  9.         my @result=grep { /$var/ } <FH2>; #hago la busqueda de mi variable
  10.         print scalar @result . "\n";
  11.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Lo que estoy haciendo es, primero, localizar en el primer archivo mi búsqueda, la almaceno en una variable, y después esa variable la busco en el archivo 2.

¡¡¡¡Saludos!!!!
davids84
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2011-01-27 13:14 @593

Re: Cómo utilizar el comando "grep" en Perl

Notapor explorer » 2011-02-11 11:38 @526

Falta la operación de lectura hacia $var, en la primera parte.
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: Cómo utilizar el comando "grep" en Perl

Notapor davids84 » 2011-02-11 11:40 @528

¡Perdón!, no entendí :( ¿Falta la operación de lectura?

¿Me puedes poner un ejemplo?

En lo que respecta al código, ¿¿¿¿está bien la lectura de los dos archivos????
davids84
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2011-01-27 13:14 @593

Re: Cómo utilizar el comando "grep" en Perl

Notapor explorer » 2011-02-11 12:18 @554

Eso estoy diciendo: que estás leyendo el segundo fichero, pero no el primero.
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: Cómo utilizar el comando "grep" en Perl

Notapor davids84 » 2011-02-11 12:31 @563

¡¡¡¡¡¡Sí, ya corrió el programa, muchas gracias!!!!!!

Solo que ahorita lo estoy guardando en un archivo y se tarda mucho...

Sabes... si quiero meterle 2 condicionantes al grep(), ¿se puede?

Por ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $result = grep { /$var,GPJFHIG01/ } <$fh>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Solo quiero que me imprima mi variable $var cuando me encuentre "GPJFHIG01" ¿¿Así está bien la forma de ponerlo??

¡¡Saludos!!
davids84
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2011-01-27 13:14 @593

Siguiente

Volver a Básico

¿Quién está conectado?

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