Bir syslog dosyasına karşı denetlemek için regex kalıplarının bir listesini grep
'a geçiriyorum. Genellikle bir IP adresi ve kayıt girişini eşleştirirler;Grep regex Dize içeren NOT
grep "1\.2\.3\.4.*Has exploded" syslog.log
Öyle bir döngü içinde, geçirerek "1\.2\.3\.4.*Has exploded"
parçası gibi kalıplarının sadece bir liste, bu yüzden örneğin "-v" geçemez.
Yukarıdakilerin tersini yapmaya çalışıyorum, belirli bir IP adresiyle bir NOT eşleşme satırı ve hatayı bu yüzden "! 1.2.3.4. * Patladı" 1.2.3.4 dışında bir şey için syslog satırlarıyla eşleşecek ben patladı. I , numaralı bir IP'yi eşleşmemelidir.
StackOverflor'da benzer iletiler görmekteyim ancak grep
ile çalışamayacağı göründüğüm regex desenlerini kullanıyorlar. Herkes grep
için bir çalışma örneği sunabilir mi lütfen?
GÜNCELLEME: Böyle bir komut dosyasında gerçekleşiyor;
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
aynı olmalıdır Eğer * bazen * Bir desenle eşleşen istiyor istemem ama diğer zamanlarda belli desen * dışında her şeyi * eşleştirmek istiyor musunuz? (Bu garip bir gereklilik gibi görünüyor, ama her neyse). Bu durumda, neden iki farklı desen listesi üzerinde durmuyorsunuz? – beerbajay
Ben regex hakkında çok bilgili değilim; "Exploded" için grep yapmak istemiyorum çünkü bunu her kayıt cihazı hakkında bilmek istemiyorum, bu yüzden bir şekilde "Has Exploded" ve 9.10.11.12 için tek bir açıklamada bulunabilir miyim? – jwbensley
Eğer bir ifadede kesinlikle yapmanız gerekiyorsa, Neil'in de belirttiği gibi, olumsuz bakış açıları gidecektir. Yorumumu orada gör. – beerbajay