Sto passando un elenco di modelli regex a grep
per verificare un file syslog. Di solito corrispondono a un indirizzo IP e una voce di registro;
grep "1\.2\.3\.4.*Has exploded" syslog.log
È solo un elenco di modelli come il "1\.2\.3\.4.*Has exploded"
parte che sto passando, in un ciclo, quindi non posso passare "-v" per esempio.
Sono confuso nel tentativo di fare il contrario di quanto sopra, NON corrisponde a righe con un determinato indirizzo IP ed errore quindi "! 1.2.3.4. * È esploso" corrisponderà a righe syslog per qualsiasi cosa diversa da 1.2.3.4 che mi dice che è esploso . Io devo essere in grado di includere un IP non corrispondono.
Ho visto vari post simili su StackOverflor, tuttavia usano schemi regex con i quali non riesco a lavorare grep
. Qualcuno può fornire un esempio funzionante per grep
favore?
AGGIORNAMENTO: Questo sta accadendo in una sceneggiatura come questa;
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"
modifiche patterns[3]="(?<!9\.10\.11\.12).*Has exploded"
e le grep "${patterns[$i]}" logfile.log
modifiche a grep -P "${patterns[$i]}" logfile.log
PCRE presuppongono più metacaratteri per impostazione predefinita, quindi potrebbe essere necessario rimuovere alcune delle fughe da altre espressioni corrispondenti.