in reply to usage of awk and grep together

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