""Mr. Shawn H. Corey"" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
> On Mon, 2006-05-06 at 08:51 +0800, joseph wrote:
>> Hello List,
>>
>>  I need help in extracting  a range of lines from a log files, i tried to 
>> do
>> it with this script:
>>
>>
>> #!/bin/perl
>>
>> use strict;
>> use warnings;
>>
>> open(FILE,"/home/teragram/status_log.txt") or die "can't open file $!\n";
>> my @line;
>>
>> while (<FILE>)  {
>>        if (/DATE:\s\d.*/../END_TIME:\s\d.*/) ##This line taken from 
>> sample
>> solution on perl cookbook, but I doubt if i did it right what the author
>> mean.###
>>     {
>>        push @line,$_;
>>     }
>> }
>>
>> my $popped = pop @line;
>> print "\t $popped \n";
>>
>>
>> ### Here the format of logfiles####
>>
>>
>> DATE: 2003/7/26
>>
>> START_TIME: 1:5:13
>> New Update files:
>> /home/teragram/daily_cycle/updates/headingupdates2003-07-24-16-00.xml
>> Applying update:
>> /home/teragram/daily_cycle/updates/headingupdates2003-07-24-16-00.xml
>> Updated /home/teragram/daily_cycle/data/marc_info.txt
>> Updated /home/teragram/daily_cycle/data/use_info.txt
>> Admin files updated
>> Updated /home/teragram/daily_cycle/data/search_master_file.txt
>> Updated /home/teragram/daily_cycle/bindata/admin.ha
>> /home/teragram/daily_cycle/bindata/marc_info.cm updated
>> /home/teragram/daily_cycle/bindata/use_info.cm updated
>> Updated /home/teragram/daily_cycle/bindata/headings.hm
>> Updated /home/teragram/daily_cycle/bindata/search.min.aut and
>> /home/teragram/daily_cycle/bindata/search.cm
>> Updated /home/teragram/daily_cycle/bindata/search.alph,
>> /home/teragram/daily_cycle/bindata/search.idx and /home/teragram/dail
>> y_cycle/bindata/search.td
>> END_TIME: 7:13:30
>>
>> DATE: 2003/7/27
>>
>> START_TIME: 1:13:35
>> No Updates found
>> No updates found
>> END_TIME: 1:13:46
>>
>> DATE: 2003/7/28
>>
>> START_TIME: 1:13:52
>> No Updates found
>> No updates found
>> END_TIME: 1:14:3
>>
>>  Now, I need too accmplished these:
>>
>> 1.Get the text from DATE/format/here to END_TIME/format/here.
>> 2.Get only the latest one or the end portion since this log append the
>> previous date logs.
>>
>> with my script above I got only the END_TIME/format/here section, I've 
>> tried
>> also reading it by paragraph but to no avail, is there any modules or 
>> tricks
>> to do the job?
>>
>> As always.thanks a lot.
>>
>> /joseph
>
>
> Do you want the last set of lines from DATE... to END TIME...?
>
> while(<FILE>){
>  @line = () if /^DATE:/;
>  push @line, $_;
> }
>
> print @line;
>
>
> -- 
> __END__
>
> Just my 0.00000002 million dollars worth,
>   --- Shawn
>
> "For the things we have to learn before we can do them, we learn by doing 
> them."
>  Aristotle
>
> * Perl tutorials at http://perlmonks.org/?node=Tutorials
> * A searchable perldoc is at http://perldoc.perl.org/
>
>

--Shawn,

    It works! as to what  I need but I have question with this lines,

@line = () if /^DATE:/; ## set array @line to an empty list if line begin 
DATE?
 push @line, $_; ## then push the value of line to an empty @line array?

Am i right?

Thank you.

/joseph

 



-- 
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