मैं grepएक syslog फ़ाइल के खिलाफ जांच करने के लिए रेगेक्स पैटर्न की एक सूची दे रहा हूं । वे आमतौर पर एक आईपी पते और लॉग प्रविष्टि से मेल खाते हैं;
grep "1\.2\.3\.4.*Has exploded" syslog.log
यह सिर्फ एक पैटर्न की सूची है जैसे "1\.2\.3\.4.*Has exploded"मैं जिस हिस्से से गुजर रहा हूं, एक लूप में, इसलिए मैं उदाहरण के लिए "-v" पास नहीं कर सकता।
मैं उपरोक्त उलटा करने की कोशिश कर रहा हूं, एक निश्चित आईपी पते और त्रुटि के साथ एक मिलान रेखाएं नहीं है इसलिए "! 1.2.3.4। * विस्फोट हो गया है" 1.2.3.4 के अलावा किसी भी चीज के लिए syslog लाइनों से मेल खाएगा जो मुझे बता रहा है कि यह विस्फोट हुआ है। । मुझे मेल नहीं करने के लिए एक आईपी शामिल करने में सक्षम होना चाहिए।
मैंने StackOverflor पर इसी तरह के विभिन्न पोस्ट देखे हैं, हालांकि वे रेगेक्स पैटर्न का उपयोग करते हैं जो मुझे काम करने के लिए नहीं मिल सकता है grep। किसी को भी grepकृपया के लिए एक काम कर उदाहरण प्रदान कर सकते हैं ?
अद्यतन: यह इस तरह से एक स्क्रिप्ट में हो रहा है;
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"परिवर्तन patterns[3]="(?<!9\.10\.11\.12).*Has exploded"और grep "${patterns[$i]}" logfile.logपरिवर्तन grep -P "${patterns[$i]}" logfile.logडिफ़ॉल्ट रूप से अधिक मेटाचैकर को मानता है, इसलिए कुछ मिलानों को अन्य मिलान अभिव्यक्तियों से हटाने की आवश्यकता हो सकती है।