Página 1 de 1

Imprimir ciertas líneas

NotaPublicado: 2009-04-07 12:06 @546
por getdan
Buenas.

¿Cómo hago para imprimir las líneas que empiencen con una palabra y seguir imprimiendo hasta que encuentre una línea que empiece con cierta palabra?

Por ejemplo, quiero imprimir las líneas entre hola y adiós si la entrada es:

Código: Seleccionar todo
hola
prueba de mensaje
continua prueba
adios


Quiero la salida:

Código: Seleccionar todo
hola
prueba de mensaje
continua prueba


Primero hago un if (/^hola/) pero ¿cómo hago para avanzar de línea?

Muchas gracias.

NotaPublicado: 2009-04-07 17:22 @765
por explorer
Bienvenido a los foros de Perl en Español, getdan.

Hace poco hemos comentado ese caso.

NotaPublicado: 2009-04-14 20:10 @882
por creating021
También hay otra forma (como cosa rara en Perl :D ) con Tie::File
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/env perl
use strict;
use Tie::File;

tie my @lineas, 'Tie::File', "my_archivo.txt"
    or die "No se puede abrir el fichero: $!\n";

# Por cada línea...
foreach my $linea ( @lineas ) {
    if ( $linea ne "adios" ) {
        print "$linea\n";
    }
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Claro, pero no es necesaria, de hecho creo que el método usado con expresiones regulares y usando while es mucho mejor.