#!/usr/bin/perl -w my %bad; while () { if (/checking image file \<(NT-Development_\d+_FULL)\>/) { my $file = $1; # in case you ever change the regex below to have brackets do { $_ = ; $bad{$file}++ if /media does not exist/; } until /checking files file/; } } print join "\n", keys %bad; __DATA__ checking image file >copy 1 frag 1 media CC0202 host netbackup2: media does not exist >copy 1 frag 2 media CC0202 host netbackup2: media does not exist >copy 1 frag 3 media CC0202 host netbackup2: media does not exist >copy 1 frag 4 media CC0202 host netbackup2: media does not exist >copy 1 frag 5 media CC0202 host netbackup2: media does not exist checking files file checking image file checking files file checking image file >copy 1 frag 1 media CC0202 host netbackup2: media does not exist >copy 1 frag 2 media CC0202 host netbackup2: media does not exist checking files file __END__