• Publicidad

Procesar líneas de archivo a partir de una expresión

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

Procesar líneas de archivo a partir de una expresión

Notapor roxana_ » 2010-11-22 11:43 @530

Quiero trabajar con un archivo de texto, pero solo me interesa procesar las lineas que están a continuación de una que contiene "#". Es decir el formato sería así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
líneas que no me interesan
# título1  título2   título3
  valorA    valorB    valorC
  valorD    valorF    valorG
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Quiero trabajar con los valores, que pensaba guardarlos en un array, pero igual me gustaría conservar los títulos de las columnas.

Saludos.
roxana_
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2010-11-04 15:18 @679

Publicidad

Re: Procesar lineas de archivo a partir de una expresión

Notapor explorer » 2010-11-22 12:50 @576

Podrías saltar las líneas que no te interesan...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open my $fh, q[<], 'fichero.txt';

while (<$fh>) {
    next if 1 .. /^#/;

    # Procesar el resto de líneas
}

close $fh;
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: Procesar líneas de archivo a partir de una expresión

Notapor sufisavey80 » 2013-06-18 16:07 @713

Tengo las siguientes líneas en un archivo csv y deseo procesar solo las líneas a partir de la que comienza con "Scenario: SSHIST_2013-06-06_1 (0.002)", de ahí para abajo. Intenté con el next if, pero no he tenido resultado. Tal vez porque no sea el camino correcto o estoy cometiendo error en la sintaxis... next if 1 .. m/SSHIST/;

¿Podrías apoyarme?

Mil gracias

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Scenario:  Base Scenario (0)                           
Position:  Instrument                          
        POS/Position Units      THEO/Value      THEO/Value@nVAR(0.95,scen)      THEO/Value@REL(scen,%diff)
2013/06/13 (0)  27,274,052      1,803,645,371.7251122 MXP       (109,479.98982215) MXP  0%
                             
                               
Scenario:  Base Scenario (0)                           
Position:  Cash                        
        POS/Position Units      THEO/Value      THEO/Value@nVAR(0.95,scen)      THEO/Value@REL(scen,%diff)
2013/06/13 (0)  0       0 MXP   0 MXP   N/A
                             
                               
Scenario:  Base Scenario (0)                           
Position:  SBG_M_NoVida                        
        POS/Position Units      THEO/Value      THEO/Value@nVAR(0.95,scen)      THEO/Value@REL(scen,%diff)
2013/06/13 (0)  27,274,052      1,803,645,371.7251122 MXP       (109,479.98982215) MXP  0%
                             
                               
Scenario:  SSHIST_2013-06-06_1 (0.002)                         
Position:  S UDIBONO 141218                            
        POS/Position Units      THEO/Value      THEO/Value@nVAR(0.95,scen)      THEO/Value@REL(scen,%diff)
2013/06/13 (0)  56,000  6,069,909.58943898 UDI  (10,293.43830997) UDI   0.05%
                             
                               
Scenario:  SSHIST_2013-06-06_1 (0.002)                         
Position:  S0 UDIBONO 131219                           
        POS/Position Units      THEO/Value      THEO/Value@nVAR(0.95,scen)      THEO/Value@REL(scen,%diff)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
sufisavey80
Perlero nuevo
Perlero nuevo
 
Mensajes: 29
Registrado: 2012-11-07 18:17 @803

Re: Procesar líneas de archivo a partir de una expresión

Notapor explorer » 2013-06-18 17:07 @755

Pues a mi sí que me funciona...
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
> perl -n -E 'next if 1 .. m/SSHIST/; print' code_34956.txt
Position:  S UDIBONO 141218
        POS/Position Units      THEO/Value      THEO/Value@nVAR(0.95,scen)      THEO/Value@REL(scen,%diff)
2013/06/13 (0)  56,000  6,069,909.58943898 UDI  (10,293.43830997) UDI   0.05%



Scenario:  SSHIST_2013-06-06_1 (0.002)
Position:  S0 UDIBONO 131219
        POS/Position Units      THEO/Value      THEO/Value@nVAR(0.95,scen)      THEO/Value@REL(scen,%diff)
 
Coloreado en 0.000 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: Procesar líneas de archivo a partir de una expresión

Notapor sufisavey80 » 2013-06-19 08:30 @396

Ok, explorer... gracias, deja, lo valido en mi programa.

Saludos.
sufisavey80
Perlero nuevo
Perlero nuevo
 
Mensajes: 29
Registrado: 2012-11-07 18:17 @803

Re: Procesar líneas de archivo a partir de una expresión

Notapor explorer » 2013-06-19 10:49 @492

He encontrado otra solución, que creo que es mejor, ya que incluye la primera línea:

> perl -n -E 'print if /SSHIST/ .. Inf' code_34956.txt

Dentro del programa, lo traduces a
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while (<>) {
    if (/SSHIST/ .. Inf) {
        ...;
    }
}
Coloreado en 0.001 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


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron