Página 1 de 1

en que linea?

NotaPublicado: 2005-09-28 16:18 @721
por julruiz
Hola como puedo hacer lo siguiente...

Tengo que buscar en un archivo una palabra... para guardarla en otro archivo...
hasta eso lo se hacer.... pero ademas necesito saber en que linea fue encontrada la palabra... ¿como puedo hacer esto?...

gracias....

NotaPublicado: 2005-09-28 17:09 @756
por explorer39
La variable $. te da el número de línea del fichero que estás leyendo. Más info en perlvar.
Por ejemplo
Código: Seleccionar todo
perl -nle 'BEGIN { open SALIDA,">indice.txt"; } print SALIDA "$. $_" if /palabra/;' fichero
Otra opción es llevar un contador por cada línea que vas leyendo.

no me funciono

NotaPublicado: 2005-09-28 22:38 @985
por julruiz
he ensayado el codigo que me has comentado..

pero al ejecutarlo me aparece el numero pero no de la linea..

sino del caracter....

NotaPublicado: 2005-09-28 23:19 @013
por kidd
Podría funcionarte hacerlo de la siguiente manera:

Código: Seleccionar todo
my $i = 0;

   open(ENTRADA, "archivo.txt");
      open(SALIDA,">salida.txt");

         while(<ENTRADA>){
            chomp;
             print SALIDA "$i - $_\n" if m/palabra/i;
             $i++;
         }
      close(SALIDA);
   close(ENTRADA);





SALUDOS

intentalo

NotaPublicado: 2005-10-01 20:27 @894
por sudo
slogan hay mas de una forma de hacerl: :idea:
Código: Seleccionar todo
open FL, "archivo" or die "Error: no puedo abrir el archivo $!";
my @lineas = <FL>;
my $numero_de_lineas = @lineas;
my $numero_de_lineas = @lineas;
sub buscar {
   my ($vez, @lin) = @_;
   if($lin[$vez] eq "palabra"){print "La encontre en la linea $vez!\n";}
   elsif($vez < $numero_de_lineas){buscar($vez+1, @lin);}
   elsif($vez > $numero_de_lineas){exit;}
}
print "Hay $numero_de_lineas lineas en este archivo ;-}\n";
buscar(0, @lineas);

a, si lo de "pablara" tiene que ser un m//; para que funcione :wink:

Re: no me funciono

NotaPublicado: 2005-10-02 06:17 @303
por explorer39
julruiz escribiste:he ensayado el codigo que me has comentado..

pero al ejecutarlo me aparece el numero pero no de la linea..

sino del caracter....
No te entiendo... ¿sale el número del carácter de...? ¿de la línea, el primer caracter de la línea, el carácter que representa la línea...?
La variable que cuenta el número de línea leídas es "$." .

Pruébalo de esta manera:
Código: Seleccionar todo
open SALIDA,">indice.txt";
open FICHERO,"<fichero.txt";
while ( my $linea = <FICHERO> )
{
    if ( $linea =~ m/palabra-a-buscar/ )
    {
        print SALIDA "Línea $.";
    }
}
close SALIDA;
close FICHERO;