Estoy pasando una lista de patrones regex greppara verificar en un archivo syslog. Por lo general, coinciden con una dirección IP y una entrada de registro;
grep "1\.2\.3\.4.*Has exploded" syslog.log
Es solo una lista de patrones como la "1\.2\.3\.4.*Has exploded"parte que estoy pasando, en un bucle, por lo que no puedo pasar "-v" por ejemplo.
Estoy confundido tratando de hacer lo contrario de lo anterior, un NO coincide con las líneas con una determinada dirección IP y error, por lo que "! 1.2.3.4. * Ha explotado" coincidirá con las líneas de syslog para cualquier cosa que no sea 1.2.3.4 diciéndome que ha explotado . Yo debo ser capaz de incluir una IP a no coinciden.
He visto varias publicaciones similares en StackOverflor, sin embargo, usan patrones de expresiones regulares con las que parece que no puedo trabajar grep. ¿Alguien puede proporcionar un ejemplo de trabajo por grepfavor?
ACTUALIZACIÓN: Esto está sucediendo en un 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"cambios patterns[3]="(?<!9\.10\.11\.12).*Has exploded"y los grep "${patterns[$i]}" logfile.logcambios en grep -P "${patterns[$i]}" logfile.logPCRE asumen más metacaracteres de forma predeterminada, por lo que algunos de los escapes pueden necesitar eliminarse de otras expresiones coincidentes.