in reply to Re: command line perl command to get between lines with non greedy match
in thread command line perl command to get between lines with non greedy match

This will print all shortest records between Pattern 1 and 3

I just doubled your input.

C:\tmp\files>perl -nE"if ($x=(/PATTERN1/../PATTERN3/)) { @out=() if /P +ATTERN1/; push @out,$_; print @out if $x=~/E0$/ }" input2 PATTERN1 SOME INFO TEXT4 TEXT5 TEXT6 PATTERN3 SOME INFO PATTERN1 SOME INFO TEXT4 TEXT5 TEXT6 PATTERN3 SOME INFO C:\tmp\files>

update

a bit cleaner

C:\tmp\files>perl -nE" $first=/PATTERN1/; $last=/PATTERN3/; if ( $firs +t..$last) { @o=() if $first; push @o,$_; say @o if $last }" input2 PATTERN1 SOME INFO TEXT4 TEXT5 TEXT6 PATTERN3 SOME INFO PATTERN1 SOME INFO TEXT4 TEXT5 TEXT6 PATTERN3 SOME INFO

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery FootballPerl is like chess, only without the dice