perl -ne'print if /^\[moo\]/../^\[cow\]/ and !/^\[/' log.log #### use strict; use warnings; open FH, '<', 'log.log' or die "can't open file\n"; print "Items found under [moo]\n"; while () { if (/^\[moo\]/../^\[cow\]/) { print unless /^\[/; } }