On Wed, 28 Aug 2002, bobby wrote:
> Hi all
>
> I have a log file which is generated by backup script and i am writing a
> perl script to sort the log so as to prepare it to put into mysql
> database and iam having a problem in doing that.
>
> my log file is like this (I have written line numbers for clarity only )
>
> 1 INCREMENTAL OF staff ON 2002-08-28 FROM 08/27/02 STARTS AT At
> block 315825.
> 2 INCREMENTAL OF www.cs ON 2002-08-28 FROM 08/27/02 STARTS AT At
> block 102860.
> 3 INCREMENTAL OF staff_homepages ON 2002-08-28 FROM 08/27/02
> STARTS AT At block 103142.
> 4 INCREMENTAL OF ftp.cs ON 2002-08-28 FROM 08/27/02 STARTS AT At
> block 103204
> 5 INCREMENTAL OF local ON 2002-08-28 FROM 08/27/02 STARTS AT At
> block 103216.
> 6 INCREMENTAL OF Hyper-G ON 2002-08-28 FROM 08/27/02 STARTS AT At
> block 103236.
> 7 INCREMENTAL OF submissions ON 2002-08-28 FROM 08/27/02 STARTS
> AT At block 104278.
> 8 INCREMENTAL OF src ON 2002-08-28 FROM 08/27/02 STARTS AT At
> block 110373.
> 9 INCREMENTAL OF IMAP ON 2002-08-28 FROM 08/27/02 STARTS AT At
> block 110455.
>
> i want a script that can give me output like this
>
> "2002-08-28","$PROBLEM","staff", "315825"
>
> $PROBLEM is actually tape number which should be derived from
> blocknumbers in the logfile
> e.g say the initial TAPE No =1 and the script should check if the block
> number is greater than the block number in the next line it should
> replace $PROBLEM with TAPE 1 Other wise should do something like
> $PROBLEM=$TAPE +1
>
> Like in my example
> line 1 should give the output as
>
> "2002-08-28","TAPE 1","staff", "315825" # because 315825 > 102860
>
> line 2 should be
>
> "2002-08-28", "TAPE 2","www.cs", "102860" # tape=$tape +1 is required
> because 102860 ! > 103142
>
> and the same with other lines ....
>
> i can do it with awk and bash but as iam learning perl iam trying to
> write everything in perl. For all the guru's out there i know its very
> simple please help
>
>
> Hmmm i hope i have explained the concept correctly
>
> Cheers
>
> Bobby
What have you tried so far? If you can post your code we can help you
better. Here is one way to do it.
#!/usr/local/bin/perl -w
use strict;
my $tape_cnt = 1;
open (BOBLOG, "bob.log") or
die "Cannot open bob.log : $!\n";
$_ = <BOBLOG>;
my ($cstr, $cdate, $cblock_no) = (split)[2,4,11]; # perldoc -f split
while (<BOBLOG>) {
my ($nstr, $ndate, $nblock_no) = (split)[2,4,11];
$tape_cnt++ if ($cblock_no <= $nblock_no);
print "$cdate, TAPE $tape_cnt, $cstr, $cblock_no\n";
($cdate, $cstr, $cblock_no) = ($ndate, $nstr, $nblock_no);
}
close (BOBLOG);
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]