Estoy pasando una lista de patrones regex grep
para 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 grep
favor?
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.log
cambios en grep -P "${patterns[$i]}" logfile.log
PCRE asumen más metacaracteres de forma predeterminada, por lo que algunos de los escapes pueden necesitar eliminarse de otras expresiones coincidentes.