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