मैं बैश निंजा नहीं हूं और मेरे पास नीचे की तरह लाइनों वाली एक फाइल है:
timestamp1 value1 value2 value3 username host
मैं सभी मान 3 और मान 2 मुद्रित करना चाहता हूं जो हर बार अलग होगा जहां मेजबान एक्स बार कहने के लिए समान था। मुझे पता है कि प्रति मेजबान कैसे grep करना है और कॉलम को जगाना है, हालांकि मुझे नहीं पता कि एक चर के लिए गिनती कैसे सेट करें?
तो उदाहरण के लिए - यदि होस्ट फ़ाइल पर 5 बार दिखाई देता है तो मैं इन 5 पंक्तियों को प्रिंट करना चाहता हूं। लेकिन यहाँ बात यह है कि मैं मेजबान को नहीं जानता इसलिए मुझे इसे एक चर में निर्दिष्ट करने और किसी तरह इसे गिनने की आवश्यकता है?
1 उत्तर
वन-लाइनर समाधान
मान लें कि आपकी फ़ाइल का नाम lst
था, ये रहा ऑनलाइनर:
grep -Ff <(awk '{print $6}' lst | sort | uniq -c | awk '$1 == 5 {print $2}') lst
क्या होता है?
- फ़ाइल से सभी होस्टनाम निकालें
- प्रत्येक होस्टनाम के लिए, घटनाओं की संख्या गिनें
- केवल वही होस्टनाम प्रिंट करें जो ठीक 5 बार दिखाई देते हैं
- फ़िल्टर किए गए होस्टनामों के लिए फ़ाइल को ग्रेप करें
नोट:
- होस्टनाम अन्य क्षेत्रों के अंदर प्रकट नहीं होने चाहिए (इससे झूठी सकारात्मकता हो सकती है)।
- आउटपुट को मूल फ़ाइल के रूप में ऑर्डर किया गया है (होस्टनाम के अनुसार सॉर्ट नहीं किया जा सकता है)। हालाँकि आप कमांड के अंत में एक
| sort
जोड़ सकते हैं।
संबंधित सवाल
नए सवाल
linux
LINUX QUESTIONS को संबंधित होना चाहिए। इस टैग का उपयोग केवल तभी करें जब आपका प्रश्न लिनक्स एपीआई या लिनक्स-विशिष्ट व्यवहार का उपयोग करके प्रोग्रामिंग से संबंधित हो, न कि केवल इसलिए कि आप लिनक्स पर अपने कोड को चलाने के लिए होते हैं। यदि आपको लिनक्स समर्थन की आवश्यकता है तो आप https://unix.stackexchange.com या विशिष्ट लिनक्स वितरण की स्टैक एक्सचेंज साइट जैसे https://askubuntu.com या https://elementaryos.stackexchange.com/ की कोशिश कर सकते हैं