Página 1 de 1

Impresión de determinadas líneas

NotaPublicado: 2010-10-08 15:40 @694
por wampaier
Hola, ¿qué tal?

¿Podrían orientarme en cómo imprimir el header, la primera y la última línea antes de un '>' (que es mi siguiente secuencia).

Gracias.

Re: Impresión de determinadas líneas

NotaPublicado: 2010-10-08 16:00 @708
por explorer
Sería interesante ver algún ejemplo de entrada, aunque sea de forma reducida.

Re: Impresión de determinadas líneas

NotaPublicado: 2010-10-08 16:09 @714
por wampaier
Hola, gracias. El ejemplo es el siguiente:

Necesito imprimir en una sola línea lo que te pongo de color:

>Cluster 53
0 84aa, >001354_2208_2784... *
1 84aa, >002597_2216_2936... at 100%
2 84aa, >010618_2176_1588... at 100%
3 84aa, >014924_2258_2885... at 100%
4 84aa, >018206_2216_1313... at 100%
5 84aa, >020274_2136_2420... at 100%
6 84aa, >021422_2242_0732... at 100%

y obtener el total de líneas porque deseo saber cuántas lecturas (en mi caso, secuencias) hay en ese continuo (grupo).

Re: Impresión de determinadas líneas

NotaPublicado: 2010-10-08 16:30 @729
por explorer
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use 5.010;
  3. use strict;
  4. use warnings;
  5. use diagnostics;
  6. use File::Slurp;
  7. use autodie;
  8.  
  9. my @lineas = read_file('kk.txt');           # leemos el fichero
  10.  
  11. chomp($lineas[0], $lineas[1]);              # quitamos los finales de línea de las dos primeras
  12.  
  13. $lineas[1] =~ s/^.*?>(.+?)\..+$/$1/;        # de la segunda, nos quedamos con lo que queremos
  14.  
  15. say "$lineas[0] $lineas[1]";                # imprimimos las dos líneas juntas
  16.  
  17. say "Número de líneas: ", scalar @lineas;   # y el número de líneas leídas
  18.  
  19. __END__
  20. >Cluster 53 001354_2208_2784
  21. Número de líneas: 8
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Re: Impresión de determinadas líneas

NotaPublicado: 2010-10-09 13:31 @605
por wampaier
Disculpa, es que tengo una versión muy viejita de Perl. ¿El read_file() es lo mismo para la versión viejita?

¡Saludos!

Re: Impresión de determinadas líneas

NotaPublicado: 2010-10-09 13:41 @612
por explorer
La función read_file() se importa desde el módulo File::Slurp. Puedes usar otro método para leer ficheros, desde luego.

Re: Impresión de determinadas líneas

NotaPublicado: 2010-10-09 13:51 @618
por wampaier
Es que la versión que tengo es la 5.8 y la verdad no sé qué diferencia haya con la versión 5.010 porque evidentemente hay librerías que no puedo utilizar...

¿Hay alguna otra manera de mandar llamar el archivo de entrada...?

Re: Impresión de determinadas líneas

NotaPublicado: 2010-10-09 13:58 @623
por explorer
Para leer un fichero de texto te vale con la terna open(), <> y close(). Hay centenares de ejemplos en este foro y seguro que tu has usado tus propios métodos para meter un fichero de texto en un array.

Si quieres que mi código funcione en tu Perl viejito (más de tres años), te vale con quitar el use 5.010; y cambiar los say() por print() (con un "\n" al final).

Re: Impresión de determinadas líneas

NotaPublicado: 2010-10-09 14:32 @647
por wampaier
¡Ah!, Ok, Ok, gracias... Sí, de hecho, eso ya lo había cambiado... pero esa era mi duda :P

¡¡Saludos!!