Se eu entendi corretamente, então é dado
$ head File\ {1..3}
==> File 1 <==
foo
Pattern 1
bar
==> File 2 <==
foo
bar
baz
==> File 3 <==
Pattern 3
foo
baz
e
$ cat infile
File 1
Pattern 1
File 2
Pattern 2
File 3
Pattern 3
então
$ sed -E '$!N; s/(.*)\n(.*)/grep -H -- "" ""/e' infile
File 1:Pattern 1
File 3:Pattern 3
ou
$ while read -r file; do
if read -r pattern; then grep -H -- "$pattern" "$file"; fi
done < infile
File 1:Pattern 1
File 3:Pattern 3