Você pode usar p erl c ompatível r egular e xpressões grep :
$ pcregrep -M '(searchString.*\n)(?!.*excludeString)' file
foo2 searchString bar
foo3 searchString bar
foo4 searchString bar
Ele procura searchString seguido por qualquer caractere . , repetido zero ou mais vezes * , seguido pela nova linha \n somente se houver não ( ?! ) padrão .*excludeString próximo a ele. A opção -M está presente para corresponder a várias linhas.