लिनक्स कमांड और शेल कौशल
awk: जब कॉलम प्रोग्राम बन जाते हैं
जब कॉलम काम की इकाई बन जाते हैं तो awk आप तक पहुंचते हैं: nginx एक्सेस लॉग, /etc/passwd, df आउटपुट, कुछ भी जो फ़ील्ड में रहता है। यह एक पूर्ण भाषा (चर, सरणियाँ, अंकगणित, पैटर्न-एक्शन नियम) है जो एक-लाइनर के कपड़े पहनती है, जो लॉग फोरेंसिक के लिए बिल्कुल सही भेष है। ईमानदार सीमा: जो कुछ भी awk आराम से करता है वह एक-लाइनर है, और ब्लॉक के एक पृष्ठ की आवश्यकता वाली कोई भी चीज़ एक पायथन स्क्रिप्ट है जिसने अभी तक खुद को स्वीकार नहीं किया है।
मुख्य बिंदु
- फ़ील्ड विभाजन मुख्य चाल है: awk -F: '$3 >= 1000 {प्रिंट $1}' /etc/passwd वास्तविक उपयोगकर्ताओं को सूचीबद्ध करता है, और -F'[,|]' मल्टी-कैरेक्टर डिलीमीटर को संभालता है जब कट पहले ही छोड़ दिया गया हो।
- साहचर्य सरणियों के साथ गणना करें: awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure किसी भी लॉग को एक पंक्ति में आवृत्ति तालिका में बदल देता है।
- एनआर और एनएफ फ़ाइल प्रश्नों का उत्तर देते हैं: 'एनआर == 1' हेडर लाइन है, '{प्रिंट एनएफ}' प्रति पंक्ति कॉलम की गणना करता है, और किसी अन्य फ़ाइल के सहेजे गए मानों के साथ एनआर की तुलना करने पर डुप्लिकेट और अंतराल मिलते हैं।
- मैच प्लस एक्सट्रैक्ट दैनिक ब्रेड है: awk '/ 500 / {प्रिंट $7, $9}' एक्सेस.लॉग यूआरएल के साथ त्रुटि पेज खींचता है, और ओएफएस आपको लाइन को दोबारा लिखे बिना एकल फ़ील्ड को संपादित करने के बाद $0 को दोबारा प्रिंट करने की सुविधा देता है।
- BEGIN और END ब्लॉक वे हैं जहां समग्र कार्य रहता है: BEGIN विभाजक सेट करता है, मध्य नियम प्रति पंक्ति चलते हैं, END योग प्रिंट करता है; तीन ब्लॉक ठीक से पढ़े गए हैं, पांच एक भेष धारण करने वाली स्क्रिप्ट है।
- कोटेशन शेल वन-लाइनर्स का असली दुश्मन है: प्रोग्राम को सिंगल-कोट, उसके अंदर डबल-कोट अक्षर, और याद रखें कि डबल-कोटेड शेल स्ट्रिंग के अंदर $7 कभी भी awk तक नहीं पहुंचता है।
- संख्यात्मक कार्य को LC_ALL=C मिलता है: संख्याओं और विषम संयोजनों में स्थानीय अल्पविराम तुलनाओं को बदल देते हैं और बग़ल में क्रमबद्ध करते हैं, और स्थान को पिन करना एक पंक्ति है जो एक दोपहर बचाती है।
- सीमा को जानें: CSV, नेस्टेड JSON, या स्टेटफुल मल्टीलाइन फॉर्मेट के अंदर उद्धृत अल्पविराम पायथन में जाते हैं; awk एक स्केलपेल है और एक ही रहता है।
क्षेत्रीय टिप्पणी
एक अजीब वन-लाइनर जिसने स्थानीय अल्पविरामों के साथ एक लॉग से डॉलर कॉलम को सारांशित किया, ऐसे नंबर उत्पन्न किए जिन पर लेखांकन रिपोर्ट खुलने तक किसी ने सवाल नहीं किया। LC_ALL=C उस सप्ताह हमारी उपनाम लाइब्रेरी में चला गया और रुक गया।
अक्सर पूछे जाने वाले प्रश्न
कॉलम कार्य के लिए awk या कट?
एक निश्चित विभाजक और एक सादे स्तंभ सूची के लिए कटौती; जैसे ही स्थितियां, रेगेक्स, अंकगणित, या समुच्चय दिखाई देते हैं, उस बिंदु पर कट किसी भी तरह से इसकी गहराई से बाहर होता है।
मैं किसी कॉलम का योग या औसत कैसे करूँ?
END में समुच्चय: awk '{s += $5} END {प्रिंट s, s/NR}' पंक्तियों में फ़ील्ड पाँच जोड़ता है और औसत करता है; यदि कोई स्थान संख्याओं में अल्पविराम लगाता है तो पहले हजारों विभाजकों को हटा दें।
मेरा awk वन-लाइनर macOS पर अलग व्यवहार क्यों करता है?
macOS -i inplace या gensub जैसे GNU एक्सटेंशन के बिना POSIX awk शिप करता है; लिनक्स पर चलने वाली स्क्रिप्ट वहां चुपचाप विफल हो सकती हैं, इसलिए वन-लाइनर्स POSIX-आकार में रखें या गॉक अपने साथ रखें।
क्या awk JSON को पार्स कर सकता है?
अर्थपूर्ण नहीं: JSON में कोई कॉलम संरचना नहीं है जो awk को समझता है और रेगेक्स हैक्स नेस्टेड ऑब्जेक्ट्स पर ब्रेक लगाता है। जब काम बढ़ता है तो jq का उपयोग करें, जो JSON के लिए awk का आकार है, या Python का json मॉड्यूल है।
लिनक्स कमांड और शेल कौशल में Kinetikatech कैसे सहायता करता है
हम इसे सैकड़ों बार संभाल चुके हैं: कमांड और स्क्रिप्टिंग आदतें जो यह तय करती हैं कि कोई व्यवस्थापक सर्वर चलाता है या उससे लड़ता है: प्रत्येक बेस इंस्टॉल में मौजूद टूल के साथ टेक्स्ट और प्रक्रियाओं को खोजना, बदलना, स्थानांतरित करना और पर्यवेक्षण करना। Linux सर्वर सुरक्षा और सर्वर प्रबंधन के साथ आपको पूरा चक्र मिलता है — हम आकलन करते हैं, लागू करते हैं, चौबीसों घंटे निगरानी रखते हैं, और महत्वपूर्ण समय में 30 मिनट में जवाब देते हैं।