Perl - Extraer string en diferentes lineas de archivo de texto

   
Vista:

Extraer string en diferentes lineas de archivo de texto

Publicado por Melvin (1 intervención) el 13/11/2014 14:38:47
Buenos días, soy nuevo en perl, quisiera extraer algunos datos de varias lineas de texto, un ejemplo sería el siguiente_:



+++ UMTS-GSM 2014-11-12 09:54:33
O&M #2497354
%%DSP BTSENVSTAT: IDTYPE=BYNAME, BTSNAME="CORRALEJA1", ISMULTIDEMU=NO;%%
RETCODE = 0 Execution succeeded.

DSP BTSENVSTAT Result
---------------------
Humidity Temperature

50.20% 20.80degree Celsius
(Number of results = 1)

LST ENVTHD Result
-----------------
Temperature Lower Limit Temperature Upper Limit Humidity Lower Limit Humidity Upper Limit

-5.0degree Celsius 28.0degree Celsius 15.0% 85.0%
(Number of results = 1)


--- END



El resultado que deseo obtener es el siguiente:

2014-11-12 09:54:33 CORRALEJA1 20.80


Y así sucesivamente para todas las apariciones en el archivo adjunto.

Agradezco realmente cualquier orientación que puedan brindarme.

MM
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Extraer string en diferentes lineas de archivo de texto

Publicado por Joaquin Ferrero (10 intervenciones) el 15/11/2014 03:50:07
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl
use v5.18;
use File::Slurp;
use autodie;
 
my $rx_time = qr/(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/;	# fecha y hora
my $rx_loc  = qr/BTSNAME="(.+?)"/;				# localización
my $rx_temp = qr/% (.+?)degree/;				# temperatura
 
 
my $archivo = read_file('kk.txt');				# leemos el archivo
 
while ($archivo =~ / ^ \+\+\+[ ]UMTS (.+?) ^ ---[ ]END /gmsx) {	# para todos los registros
 
    my $registro = $1;						# interior del registro
 
    my($fecha) = $registro =~ $rx_time;				# extraemos valores
    my($loc  ) = $registro =~ $rx_loc;
    my($temp ) = $registro =~ $rx_temp;
 
    say join " " => $fecha, $loc, $temp;			# y los imprimimos
}

Saludos desde Perl en Español.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar