Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

लिनक्स में awk कमांड का उपयोग कैसे करें [उदाहरण के साथ]

यह मार्गदर्शिका आपको लिनक्स में awk कमांड का उपयोग करने का तरीका दिखाती है, जिसमें बहुत सारे उपयोगी रोज़मर्रा के उदाहरण हैं।

AWK Linux ऑपरेटिंग सिस्टम के लिए उपलब्ध टेक्स्ट को खोजने और उसमें हेरफेर करने के लिए एक टूल और भाषा है।

अजीब पैटर्न . द्वारा परिभाषित पाठ के लिए कमांड और संबंधित स्क्रिप्टिंग भाषा खोज फ़ाइलें और एक विशिष्ट कार्रवाई करें पैटर्न से मेल खाने वाले टेक्स्ट पर।

अजीब बड़ी टेक्स्ट फ़ाइलों या बड़ी संख्या में टेक्स्ट फ़ाइलों से डेटा निकालने और रिपोर्ट बनाने के लिए एक उपयोगी उपकरण है - उदाहरण के लिए प्रसंस्करण लॉग, या तापमान जांच जैसे डेटा-रिकॉर्डिंग उपकरणों का आउटपुट, जिन्होंने समय की अवधि में बहुत अधिक डेटा एकत्र किया है . इसका उपयोग डेटाबेस प्रश्नों के आउटपुट पर भी किया जा सकता है।

awk; इंस्टॉल करने की कोई आवश्यकता नहीं है; यह आपके Linux सिस्टम पर पहले से ही उपलब्ध होना चाहिए।

अजीब सिंटैक्स

awk . का उपयोग करने का सिंटैक्स टर्मिनल में कमांड इस प्रकार है:

awk [PROGRAM] [INPUT FILES]

ध्यान दें कि:

  • [PROGRAM] खोज पैटर्न और की जाने वाली कार्रवाइयां हैं - यह वह प्रोग्राम है जिसे आप आपूर्ति की गई फ़ाइलों पर चलाना चाहते हैं
    • इसे -f का उपयोग करके इनलाइन के बजाय टेक्स्ट फ़ाइल के रूप में भी दिया जा सकता है विकल्प
  • [INPUT FILES] वे फाइलें हैं जिन पर आप काम करना चाहते हैं - यह एक स्पेस से अलग की गई कई फाइलें हो सकती हैं, या एक निर्देशिका का पथ, या मिलान करने के लिए फाइलों का एक पैटर्न हो सकता है
    • यदि कोई इनपुट फ़ाइल निर्दिष्ट नहीं है, तो awk किसी अन्य कमांड से पाइप किए गए आउटपुट पर काम करेगा

अजीब विकल्प

निम्नलिखित विकल्प awk कमांड को दिए जा सकते हैं:

<थ> <थ>
-f प्रोग्राम-फाइल प्रोग्राम टेक्स्ट को कमांड लाइन के बजाय फाइल से पढ़ा जाता है। एकाधिक -f विकल्प स्वीकार किए जाते हैं।
-F मान फ़ील्ड विभाजक, FS, को मान पर सेट करता है।
-v var=value प्रोग्राम वेरिएबल var को मान असाइन करता है।

awk के अपने संस्करण के लिए अधिक कार्यान्वयन-विशिष्ट विकल्पों के लिए, आप मैन्युअल को चलाकर देख सकते हैं:

man awk

कार्यक्रम क्रियाएँ और चर

आप जिस प्रोग्राम की आपूर्ति करते हैं awk यह निर्धारित करेगा कि यह आपके द्वारा आपूर्ति की जाने वाली टेक्स्ट फ़ाइलों के साथ क्या करता है। एक awk प्रोग्राम निम्न स्वरूप लेता है:

CONDITION { ACTION }
CONDITION { ACTION }
...

जहां शर्त मेल खाने वाले टेक्स्ट का पैटर्न है और कार्रवाई मिलान किए गए पाठ पर कार्रवाई करने के लिए है। आप जितनी चाहें उतनी शर्तें और कार्रवाइयां कर सकते हैं।

कार्रवाइयां

आपूर्ति की गई क्रियाएं कमांड हैं जिनमें गणना, चर और कॉलिंग फ़ंक्शन शामिल हो सकते हैं। कुछ अंतर्निहित कार्य कार्यान्वयन-विशिष्ट हैं, इसलिए इनके लिए अपने मैनुअल की जांच करना सबसे अच्छा है।

रिकॉर्ड

अजीब आम तौर पर टेक्स्ट फ़ाइल की प्रत्येक नई पंक्ति को एक रिकॉर्ड . के रूप में मानता है जब तक अन्यथा विकल्प . द्वारा निर्दिष्ट न किया गया हो ।

फ़ील्ड

अजीब फ़ील्ड . को दर्शाने के लिए व्हाइटस्पेस (रिक्त स्थान, टैब) का उपयोग करेगा एक रिकॉर्ड . में जब तक अन्यथा विकल्प . द्वारा निर्दिष्ट न किया गया हो ।

चर

अजीब कई अंतर्निहित चर हैं जिनका उपयोग आप स्वयं परिभाषित किए बिना कर सकते हैं, जो कुछ सामान्य परिदृश्यों को कवर करते हैं:

<थ>अर्थ
परिवर्तनीय
$0 संपूर्ण रिकॉर्ड का प्रतिनिधित्व करता है
$1, $2, $3 … फ़ील्ड वैरिएबल - अलग-अलग टेक्स्ट फ़ील्ड के टेक्स्ट/मानों को रिकॉर्ड में रखें
NR / N umber of R रिकॉर्ड्स सभी फाइलों से अब तक पढ़े गए इनपुट रिकॉर्ड की संख्या की वर्तमान गणना
FNR / F ile N umber of R रिकॉर्ड्स वर्तमान फ़ाइल में अब तक पढ़े गए इनपुट रिकॉर्ड की संख्या की वर्तमान गणना - हर बार एक नई फ़ाइल शुरू होने पर स्वचालित रूप से शून्य पर रीसेट करें
NF / N umber of F पैदावार वर्तमान इनपुट रिकॉर्ड में फ़ील्ड की संख्या - किसी रिकॉर्ड में अंतिम फ़ील्ड को $NF का उपयोग करके संदर्भित किया जा सकता है, दूसरा से अंतिम फ़ील्ड $(NF-1) और इसी तरह का उपयोग करके
FILENAME वर्तमान इनपुट फ़ाइल का नाम
FS / F ield S बाष्पीकरण करनेवाला एक रिकॉर्ड में फ़ील्ड को अलग करने के लिए उपयोग किया जाने वाला वर्ण। डिफ़ॉल्ट रूप से कोई भी स्थान और टैब वर्ण शामिल होते हैं
रुपये / आर एकॉर्ड एस बाष्पीकरण करनेवाला एक फाइल में रिकॉर्ड्स को अलग करने के लिए इस्तेमाल किया जाने वाला कैरेक्टर। डिफ़ॉल्ट रूप से नई पंक्ति
ओएफएस / आउटपुट F ield S बाष्पीकरण करनेवाला Awk आउटपुट में फ़ील्ड को अलग करने के लिए उपयोग किए जाने वाले कैरेक्टर। डिफ़ॉल्ट एक एकल स्थान है
ORS / O आउटपुट आर एकॉर्ड एस बाष्पीकरण करनेवाला Awk आउटपुट में फ़ील्ड को अलग करने के लिए उपयोग किए जाने वाले कैरेक्टर। डिफ़ॉल्ट एक नई लाइन है
OFMT / O आउटपुट F याएमटी संख्यात्मक आउटपुट के लिए प्रारूप - डिफ़ॉल्ट प्रारूप “%.6g” . है

अजीब उपयोग उदाहरण

इन उदाहरणों के लिए, हम एक टेक्स्ट फ़ाइल पर काम करेंगे, जिसका नाम है flowers.txt , जिसमें निम्नलिखित पाठ है:

red rose
yellow daffodil
pink flamingo
white rose
blue iris
white lily
red peony
yellow orchid
purple foxglove

फ़ाइल सामग्री प्रिंट करें

निम्न awk कमांड awk प्रिंट का उपयोग करके किसी फ़ाइल की सामग्री को टर्मिनल पर आउटपुट करेगा समारोह:

awk '{print}' flowers.txt

फ़ाइल में रिकॉर्ड की संख्या (लाइनें) प्रिंट करें

awk 'END { print NR }' sample.txt

यह उदाहरण फ़ाइल में पंक्तियों की संख्या को आउटपुट करेगा:

9

रेगुलर एक्सप्रेशन का उपयोग करके फ़ाइल में टेक्स्ट खोजें

निम्न आदेश केवल गुलाब . के प्रकारों का वर्णन करने वाली फ़ाइल में पंक्तियों को आउटपुट करेगा :

awk '/rose/' flowers.txt

ध्यान दें कि REGEX (रेगुलर एक्सप्रेशन) सिंटैक्स का उपयोग खोज के लिए टेक्स्ट को परिभाषित करने के लिए किया जाता है।

यह कमांड आउटपुट करेगा:

red rose
white rose

अधिक रेगेक्स

awk '/^p/' flowers.txt

यह आदेश केवल p . से शुरू होने वाले रिकॉर्ड को आउटपुट करेगा :

pink flamingo
purple foxglove

फ़ील्ड चर का उपयोग करना

फ़ील्ड वैरिएबल . का उपयोग करके , आप रिकॉर्ड के लिए केवल पहला फ़ील्ड p . से शुरू कर सकते हैं आउटपुट कर सकते हैं :

awk '/^p/ {print $1;}' flowers.txt

जो आउटपुट करेगा:

pink
purple

अन्य प्रोग्राम से आउटपुट प्रोसेस करना

आप पाइप कर सकते हैं अन्य Linux शेल प्रोग्राम से आउटपुट awk . में प्रसंस्करण के लिए। यह उदाहरण ls -l . से आउटपुट लेता है आदेश, जो वर्तमान निर्देशिका की सामग्री को सूचीबद्ध करता है और पांचवें . की सामग्री लौटाता है फ़ील्ड (फ़ाइल का आकार):

ls -l | awk '{print $5}'

जो कुछ इस तरह आउटपुट करेगा:

3104
3072
224
256

...(इस पर निर्भर करता है कि वर्तमान निर्देशिका में कितनी फाइलें हैं और वे कितनी बड़ी हैं)।

अंतर्निहित चर का उपयोग करना

awk '{print NR "-" $2 }' flowers.txt

यह कमांड वर्तमान रिकॉर्ड नंबर (फाइल लाइन नंबर) को प्रिंट करेगा और उसके बाद दूसरा फील्ड - फूल का नाम:

1-red rose
2-yellow daffodil
3-pink flamingo
4-white rose
5-blue iris
6-white lily
7-red peony
8-yellow orchid
9-purple foxglove

कार्यों का संयोजन

शर्तें और कार्रवाइयां && . का उपयोग करके जोड़ा जा सकता है यह आदेश उन सभी रिकॉर्डों को प्रिंट करेगा जहां पहले फ़ील्ड में टेक्स्ट लाल . है और दूसरी फ़ील्ड में 5 वर्णों से कम है :

awk '$1 ~ /red/ && length($NF) < 5 { print }' flowers.txt

नोट:

  • $NF . का उपयोग $2 . का उपयोग करने के विकल्प के रूप में दूसरे क्षेत्र में जाने के लिए - संभव है क्योंकि यह अंतिम फ़ील्ड है और इस प्रकार NF (फ़ील्ड की संख्या) के बराबर है
  • लंबाई () फ़ंक्शन का उपयोग फ़ील्ड की लंबाई की गणना करने के लिए किया जाता है

तो यह उदाहरण फ़ाइल से एकल मिलान रिकॉर्ड देता है:

red rose

निष्कर्ष

अजीब एक कारण के लिए लिनक्स के साथ बहुत अधिक सार्वभौमिक रूप से शामिल है - यह टेक्स्ट को खोजने और संसाधित करने के लिए एक मुख्य उपकरण है, जिसका उपयोग आप अपने सिस्टम में कुछ गलत होने पर या शोध उपयोग के लिए कैप्चर किए गए डेटा को संसाधित करने के लिए लॉग प्रविष्टियों को जल्दी से खोजने के लिए कर सकते हैं।

यदि आपने कभी भी टेक्स्ट फ़ाइलों के एक बड़े संग्रह पर एक साधारण खोज/प्रतिस्थापन के अलावा कुछ भी करने का प्रयास किया है, तो आपको चलाने की आवश्यकता के बिना प्रोग्रामेटिक रूप से अपने सभी टेक्स्ट में विशेष रूप से प्रतिस्थापन या अपडेट करने में सक्षम होने का मूल्य पता चल जाएगा। अलग-अलग कमांड खोजें/बदलें।

हमारी अन्य Linux युक्तियाँ देखें!


  1. लिनक्स में टी कमांड का उपयोग कैसे करें

    यदि आप कभी भी अपने लिनक्स शेल के तहत पाइप और पुनर्निर्देशन का उपयोग करते हैं, तो संभावना है कि आपको कभी-कभी tee का उपयोग करने की भी आवश्यकता होगी। उपयोगिता। टी क्या करती है? एक कमांड जैसे ls आपकी वर्तमान निर्देशिका की सामग्री प्रदर्शित करेगा। दूसरे शब्दों में, यह इन सामग्रियों को स्टडआउट (मानक आउट

  1. लिनक्स में नेटवर्क कनेक्शन की निगरानी के लिए ss कमांड का उपयोग कैसे करें

    यदि आप Linux का उपयोग करते हैं, तो संभवत:एक समय आएगा जब आपको अपने नेटवर्क के बारे में अधिक जानने की आवश्यकता होगी। कई उपकरण ऐसा करने में आपकी सहायता कर सकते हैं, और कुछ अन्य की तुलना में अधिक जटिल हैं। ss कमांड एक ऐसी चीज है जिस पर आप कई मशीनों पर इंस्टाल होने पर भरोसा कर सकते हैं, इसलिए इसे जानना आ

  1. उदाहरण के साथ, लिनक्स में वॉच कमांड का उपयोग कैसे करें

    लिनक्स में वॉच कमांड एक काम करता है - एक कमांड को दोहराता है और परिणाम को बार-बार आउटपुट करता है, जिससे आप परिवर्तनों को देख सकते हैं। यहां इसका उपयोग करने का तरीका बताया गया है। कमांड सिंटैक्स देखें वॉच कमांड का सिंटैक्स इस प्रकार है: watch OPTIONS COMMAND ध्यान दें कि: विकल्प नीचे दी गई तालिका