in reply to Read in the logfile
G'day lddzjwwy,
The problem with your code is that ".*" matches zero or more characters; thus, "/^<(.*)/" matches "<" and "<xxx;".
Here's a barebones script that captures the data you want. I'll leave you to format the output however you want it.
#!/usr/bin/env perl use strict; use warnings; my $re = qr{^<(.+);}; while (<DATA>) { if (/$re/) { print_log_entry_header($1); } else { print; } } sub print_log_entry_header { print "*** Log Entry: @_ ***\n"; } __DATA__ <syrip:survey; ORDERED < EX-A 9UCIE6CG0CL235_____D331 AD-12 TIME 130429 1428 PAGE 1 SOFTWARE RECOVERY SURVEY EVENT TYPE EXPLANATION EVENTCNT FRDE +L 8 FORLOPP MANUALLY INITIATED FORLOPP RELEASE +1 7 LARGE OTHER-EEDWL 6 LARGE OTHER-STARTUP 5 LARGE INIT START/RESTART AFTER INIT START EVENT CODE INF1 INF2 INF3 INF4 SIDE STATE DATE TIME AC +T 8 H'310C H'0000 H'0F98 H'0001 H'0000 A SINGLE 130116 153704 NO 7 H'9003 H'000A H'0000 H'0000 H'0000 B SINGLE 120912 113918 NO 6 H'9003 H'000A H'0000 H'0000 H'0000 B SINGLE 120906 090851 NO 5 H'9004 H'0000 H'0000 H'0000 H'0000 B SINGLE 120905 171355 NO END EX-A 9UCIE6CG0CL235_____D331 AD-12 TIME 130429 1428 PAGE 1 <sastp; ......
Output:
$ pm_custom_file_split.pl *** Log Entry: syrip:survey *** ORDERED < EX-A 9UCIE6CG0CL235_____D331 AD-12 TIME 130429 1428 PAGE 1 SOFTWARE RECOVERY SURVEY EVENT TYPE EXPLANATION EVENTCNT FRDE +L 8 FORLOPP MANUALLY INITIATED FORLOPP RELEASE +1 7 LARGE OTHER-EEDWL 6 LARGE OTHER-STARTUP 5 LARGE INIT START/RESTART AFTER INIT START EVENT CODE INF1 INF2 INF3 INF4 SIDE STATE DATE TIME AC +T 8 H'310C H'0000 H'0F98 H'0001 H'0000 A SINGLE 130116 153704 NO 7 H'9003 H'000A H'0000 H'0000 H'0000 B SINGLE 120912 113918 NO 6 H'9003 H'000A H'0000 H'0000 H'0000 B SINGLE 120906 090851 NO 5 H'9004 H'0000 H'0000 H'0000 H'0000 B SINGLE 120905 171355 NO END EX-A 9UCIE6CG0CL235_____D331 AD-12 TIME 130429 1428 PAGE 1 *** Log Entry: sastp *** ......
-- Ken
|
|---|