On 09/24/2006 07:04 PM, David Gilden wrote:
Greetings,

I am having a little trouble understanding matching and getting the sub pattern saved to a Var. so that I can do a munge. I want to take the line returns and change them into pipe characters '|' All data records start with a date i.e. 01/01/2006 But there are fields in between that are one multiple lines. Sample data is below the script.

Here's what I have so far....
#!/usr/bin/perl -w


open(FI,"test.txt") || die "Read in, Could not find File, $!";
my @files = <FI>;
close(FI);

for (@files){

chomp($_);

$_ =~m|(\d+/\d+/\d+)(?s)(.+?)\d+/\d+/\d+|;

$2 =~tr/\n/|/;

print "$1$2\n";

# save out modified result...
}

Given this data:

09/01/2006|03:29AM Password for qsocordovam reset by Self Reset utility Username: qsocordovam ClientNumber: 77927 IP address: 24.248.1.241 09/01/2006|07:53AM Failed reset attempt Username: tmpcollic03 ClientNumber: 110330 IP address: 152.121.16.7 Failed challenge question(s) 09/01/2006|07:55AM Failed reset attempt Username: tmpcollic03 ClientNumber: 110330 IP address: 152.121.16.7 Failed challenge question(s) 09/01/2006|08:03AM Failed reset attempt Desired result: 09/01/2006|03:29AM Password for qsocordovam reset by Self Reset utility|Username: qsocordovam|ClientNumber: 77927|IP address: 24.248.1.241 #Next record.... starts with a date of format : 09/01/2006


Thanks for any input on my output :)

Dave Gilden (kora musician / audiophile / webmaster @ www.coraconnection.com / Ft. Worth, TX, USA)





If the file is small enough to slurp into memory, you could do something like this:

#!/usr/bin/perl

use strict;
use warnings;

my $data = join '', <DATA>;
my @blocks = $data =~ m/^([0-9\/]+.*?(?=^[0-9\/]+))/gsm;
print "\n";

s/\n/\|/g for @blocks;
print "$_\n\n" for @blocks;


__DATA__
09/01/2006|03:29AM Password for qsocordovam reset by Self Reset utility
Username: qsocordovam
ClientNumber: 77927
IP address: 24.248.1.241
09/01/2006|07:53AM Failed reset attempt
Username: tmpcollic03
ClientNumber: 110330
IP address: 152.121.16.7
Failed challenge question(s)
09/01/2006|07:55AM Failed reset attempt
Username: tmpcollic03
ClientNumber: 110330
IP address: 152.121.16.7
Failed challenge question(s)
09/01/2006|08:03AM Failed reset attempt



--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to