Grep regex não contendo string

Eu estou passando uma lista de padrões de regex paragrep para verificar um arquivo syslog. Eles geralmente estão combinando um endereço IP e uma entrada de log;

<code>grep "1\.2\.3\.4.*Has exploded" syslog.log
</code>

É apenas uma lista de padrões como o"1\.2\.3\.4.*Has exploded" parte que eu estou passando, em um loop, então eu não posso passar "-v" por exemplo.

Estou confuso tentando fazer o inverso do acima, um NOT combinar linhas com um certo endereço IP e erro assim "! 1.2.3.4. * Explodiu" irá coincidir com as linhas syslog para qualquer coisa diferente de 1.2.3.4 me dizendo que explodiu . Eudevo ser capaz de incluir um IP para NÃO corresponder.

Eu vi vários posts similares no StackOverflor, mas eles usam padrões de regex com os quais eu não consigo trabalhargrep. Alguém pode fornecer um exemplo de trabalho paragrep por favor?

ATUALIZAR: Isso está acontecendo em um script como esse;

<code>patterns[1]="1\.2\.3\.4.*Has exploded"
patterns[2]="5\.6\.7\.8.*Has died"
patterns[3]="\!9\.10\.11\.12.*Has exploded"

for i in {1..3}
do
 grep "${patterns[$i]}" logfile.log
done
</code>

questionAnswers(3)

yourAnswerToTheQuestion