• Publicidad

en que linea?

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

en que linea?

Notapor julruiz » 2005-09-28 16:18 @721

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....
julruiz
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2005-09-11 20:55 @913

Publicidad

Notapor explorer39 » 2005-09-28 17:09 @756

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.
explorer39
 

no me funciono

Notapor julruiz » 2005-09-28 22:38 @985

he ensayado el codigo que me has comentado..

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

sino del caracter....
julruiz
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2005-09-11 20:55 @913

Notapor kidd » 2005-09-28 23:19 @013

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
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

intentalo

Notapor sudo » 2005-10-01 20:27 @894

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:
Unix live free or die
sudo
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2005-10-01 20:08 @880

Re: no me funciono

Notapor explorer39 » 2005-10-02 06:17 @303

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;
explorer39
 


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 5 invitados