#!/bin/sh perl -i~ -e ' # -i~ for in-place editing with tilde backup use strict; use warnings; my %excludehash; my $file = shift; open(my $excludelist, "<", $file) or die; while(<$excludelist>) { chomp; next if /^$/; $excludehash{ $_ }=1; } close($excludelist); { local($/) = ""; while (<>) { next if ( m/^YOURKEY:\s+(.*)$/m && $excludehash{ $1 } ); print } }' "excludefile" "datafile"