>perl -ne"if ($x=(/PATTERN1/.../PATTERN?/)) { $out[$x]=$_; $last=$x; }; END{ print @out[1..$last] }" input PATTERN1 SOME INFO TEXT4 TEXT5 TEXT6 PATTERN3 SOME INFO C:\tmp\files>