Estou passando uma lista de padrões de regex grep
para verificar em um arquivo syslog. Eles geralmente correspondem a um endereço IP e uma entrada de log;
grep "1\.2\.3\.4.*Has exploded" syslog.log
É apenas uma lista de padrões como a "1\.2\.3\.4.*Has exploded"
parte que estou passando, em um loop, então não posso passar "-v" por exemplo.
Estou confuso ao tentar fazer o inverso do exposto acima, um NÃO corresponde a linhas com um determinado endereço IP e erro, de modo que "! 1.2.3.4. * Explosion" corresponderá às linhas do syslog para algo diferente de 1.2.3.4, informando que ele explodiu . I deve ser capaz de incluir um IP para não coincidem.
Eu já vi vários posts semelhantes no StackOverflor, no entanto, eles usam padrões regex com os quais não consigo trabalhar grep
. Alguém pode dar um exemplo de trabalho, por grep
favor?
UPDATE: Isso está acontecendo em um script como este;
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
patterns[3]="\!9\.10\.11\.12.*Has exploded"
alterações patterns[3]="(?<!9\.10\.11\.12).*Has exploded"
e as grep "${patterns[$i]}" logfile.log
alterações no grep -P "${patterns[$i]}" logfile.log
PCRE assumem mais metacaracteres por padrão, portanto, algumas fugas podem precisar ser removidas de outras expressões correspondentes.