परिस्थिति:
मेरे पास एक बड़ी फ़ाइल (लाखों पंक्तियाँ) हैं जिनमें कई घंटे नेटवर्क कैप्चर, एक आईपी / पोर्ट प्रति लाइन से आईपी पते और पोर्ट होते हैं। लाइनें इस प्रारूप की हैं:
ip.ad.dre.ss[:port]
वांछित परिणाम:
लॉगिंग करते समय मुझे प्राप्त प्रत्येक पैकेट के लिए एक प्रविष्टि है, इसलिए बहुत सारे डुप्लिकेट पते हैं। मैं इसे किसी प्रकार की शेल स्क्रिप्ट के माध्यम से चलाने में सक्षम होना चाहूंगा जो इसे प्रारूप की रेखाओं तक कम करने में सक्षम होगा
ip.ad.dre.ss[:port] count
countउस विशिष्ट पते (और पोर्ट) की घटनाओं की संख्या कहां है। कोई विशेष काम नहीं करना है, विभिन्न बंदरगाहों को अलग-अलग पते के रूप में मानें।
अब तक, मैं इस कमांड का उपयोग लॉग फाइल से सभी आईपी एड्रेस को स्क्रैप करने के लिए कर रहा हूँ:
grep -o -E [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)? ip_traffic-1.log > ips.txt
उस से, मैं अपने पते द्वारा भेजे गए सभी आईपी पते को निकालने के लिए एक बहुत ही सरल रीजेक्स का उपयोग कर सकता हूं (जो मुझे परवाह नहीं है)
फिर मैं अद्वितीय प्रविष्टियों को निकालने के लिए निम्नलिखित का उपयोग कर सकता हूं:
sort -u ips.txt > intermediate.txt
मुझे नहीं पता कि मैं किस तरह से किसी तरह से रेखा की गणना कर सकता हूं।
-bgrसंयोगवश किस तरह से एक महामारी की तरह दिखता हैbigger, जो कि हम शीर्ष पर चाहते हैं।