• Publicidad

Seleccionar texto en un archivo entre dos marcas

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

Seleccionar texto en un archivo entre dos marcas

Notapor danusol » 2011-07-05 07:15 @343

Hola,

tengo un archivo de texto del que quiero coger únicamente las líneas que están entre #START y #END, pero solo la zona que tiene dos columnas y no tres, y guardar los valores de la segunda columna para sumarlos. Es decir, mi archivo sería así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Línea1
Línea2
Línea3
..
#START
column  value
1  5
2  7
3  2
4  17
5  20
#END
línea52
línea53
..
#START
column  value  error
1  5  2
2  7  1
3  2  2
4  17  1
5  20  1
#END
línea100
línea101
línea102
..
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿cómo puedo seleccionar únicamente esa zona?

Gracias

D
danusol
Perlero nuevo
Perlero nuevo
 
Mensajes: 46
Registrado: 2010-04-22 07:08 @339

Publicidad

Re: Seleccionar texto en un archivo entre dos marcas

Notapor explorer » 2011-07-05 09:37 @442

Facilísimo, con el operador rango:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use 5.010;
  3. use strict;
  4. use autodie;
  5.  
  6. open my $FICHERO, q[<], 'kk.txt';       # tengo un archivo de texto
  7.  
  8. my $suma;
  9.  
  10. while (<$FICHERO>) {                    # del que quiero coger únicamente
  11.  
  12.     if (/^#START/ .. /^#END/) {         # las líneas que están entre #START y #END
  13.         my @campos = split;
  14.         next if @campos != 2;           # pero solo la zona que tiene dos columnas
  15.         #say "@campos";
  16.         $suma += $campos[1];            # y guardar los valores de la segunda columna para sumarlos
  17.     }
  18. }
  19.  
  20. close $FICHERO;
  21.  
  22. say "Suma: $suma";
  23.  
  24. __END__
  25. Suma: 51
Coloreado en 0.002 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: Seleccionar texto en un archivo entre dos marcas

Notapor danusol » 2011-07-06 02:20 @139

¡Gracias, explorer!

No sabía que el operador rango se podía usar así, y por lo que he mirado en Google parece que suele ser algo común el no usarlo.

Una cosa más aprendida.
danusol
Perlero nuevo
Perlero nuevo
 
Mensajes: 46
Registrado: 2010-04-22 07:08 @339


Volver a Básico

¿Quién está conectado?

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