grep
Bir syslog dosyasına karşı kontrol etmek için normal ifade desenleri listesi geçiriyorum. Genellikle bir IP adresi ve günlük girişi ile eşleşirler;
grep "1\.2\.3\.4.*Has exploded" syslog.log
Bu sadece bir "1\.2\.3\.4.*Has exploded"
döngü içinde geçmekte olduğum kısım gibi desenlerin bir listesi , bu yüzden örneğin "-v" yi geçemiyorum.
Yukarıdakilerin tersini yapmaya çalışırken kafam karıştı, belirli bir IP adresi ve hatayla eşleşmeyen bir NOT eşleşmesi "! . Ben olmalıdır maç DEĞİL bir IP ekleyemeyebiliriz.
StackOverflor üzerinde çeşitli benzer mesajlar gördüm, ancak onlar ile çalışmak gibi olamaz regex desenleri kullanın grep
. Herkes grep
lütfen çalışma örneği verebilir mi?
GÜNCELLEME: Bu böyle bir senaryoda oluyor;
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"
kullanın : PCRE'deki değişiklikler patterns[3]="(?<!9\.10\.11\.12).*Has exploded"
ve PCRE'deki grep "${patterns[$i]}" logfile.log
değişiklikler grep -P "${patterns[$i]}" logfile.log
varsayılan olarak daha fazla meta karakter kabul eder, bu nedenle kaçışların bazı eşleşen ifadelerden kaldırılması gerekebilir.