juster's advice to do the job in Perl is sound and the task need not take many lines of code.
use strict; use warnings; my @wantedLines = grep { m{^fileid} .. m{^-----} and m{pattern} } <>; print for @wantedLines;
Here is a pretend log file.
$ cat spw765108.log a line another line fileid 123 some data a pattern we want some more data another wanted pattern yet more data ----- another line a pattern outside our bounds last line $
Now run the script, giving the log file as an argument.
$ ./spw765108 spw765108.log a pattern we want another wanted pattern $
The <> reads the filehandle automatically opened on the file (or files) supplied as arguments to the script. The built-in grep filters the lines read from the filehandle to pass into @wantedLines only those that satisfy the conditions set. The first condition uses the range operator (also known as the flip-flop operator) to select only those lines between the two conditions. A further test to see if any lines match the desired pattern also has to be true.
I hope this is helpful.
Cheers,
JohnGG
In reply to Re: usage of awk and grep together
by johngg
in thread usage of awk and grep together
by raghu_shekar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |