आवक में फ्लो कंट्रोल स्टेटमेंट का उपयोग कैसे करें - भाग 12


जब आप हमारे द्वारा अब तक कवर किए गए सभी Awk उदाहरणों की समीक्षा करते हैं, तो कुछ शर्तों के आधार पर टेक्स्ट फ़िल्टरिंग ऑपरेशन की शुरुआत से ही, यही वह जगह है जहाँ प्रवाह नियंत्रण कथनों का दृष्टिकोण सेट होता है।

Awk प्रोग्रामिंग में विभिन्न प्रवाह नियंत्रण वक्तव्य हैं और इनमें शामिल हैं:

  1. यदि -अन्य कथन
  2. कथन के लिए
  3. जबकि कथन
  4. है
  5. do-जबकि बयान
  6. ब्रेक स्टेटमेंट
  7. स्टेटमेंट जारी रखें
  8. अगला कथन
  9. अगला कथन
  10. निकास कथन

हालाँकि, इस श्रृंखला के दायरे के लिए, हम इस पर विस्तार करेंगे: if-else , for , जबकि और करते हैं कोड> बयान। याद रखें कि हम पहले ही अवेक श्रृंखला से चले थे।

1. यदि -अन्य विवरण

यदि कथन का अपेक्षित सिंटैक्स, विवरण के अनुसार शेल के समान है:

if  (condition1) {
     actions1
}
else {
      actions2
}

उपरोक्त सिंटैक्स में, condition1 और condition2 Awk अभिव्यक्तियाँ हैं, और क्रियाएँ1 और क्रियाएँ2 हैं, जब कोई वाक्य निष्पादित होता है संबंधित शर्तें संतुष्ट हैं।

जब कंडीशन 1 संतुष्ट हो जाती है, तो इसका मतलब है कि यह सच है, तब एक्शन 1 निष्पादित होता है और यदि स्टेटमेंट निकलता है, अन्यथा एक्शन 2 निष्पादित होता है।

अगर विवरण को नीचे दिए गए if-else_if-else विवरण में भी विस्तारित किया जा सकता है:

if (condition1){
     actions1
}
else if (conditions2){
      actions2
}
else{
     actions3
}

ऊपर दिए गए फॉर्म के लिए, यदि कंडिशन 1 सच है, तो एक्शन 1 को निष्पादित किया जाता है और यदि स्टेटमेंट बाहर निकलता है, अन्यथा कंडीशन 2 का मूल्यांकन किया जाता है और यदि यह सत्य है, तो एक्शन 2 को निष्पादित किया जाता है और यदि स्टेटमेंट निकलता है। हालाँकि, जब कंडीशन 2 झूठी होती है, तो क्रिया 3 निष्पादित होती है और यदि कथन बाहर निकलता है।

यहां बयानों का उपयोग करने के मामले में एक मामला है, हमारे पास उपयोगकर्ताओं की एक सूची है और उनकी उम्र फ़ाइल में संग्रहीत है, users.txt।

हम उपयोगकर्ता के नाम को दर्शाते हुए एक स्टेटमेंट प्रिंट करना चाहते हैं और चाहे उपयोगकर्ता की आयु 25 वर्ष से कम हो या अधिक हो।

[email  ~ $ cat users.txt
Sarah L			35    	F
Aaron Kili		40    	M
John  Doo		20    	M
Kili  Seth		49    	M    

हम अपनी नौकरी को ऊपर ले जाने के लिए एक छोटी खोल स्क्रिप्ट लिख सकते हैं, यहाँ स्क्रिप्ट की सामग्री है:

#!/bin/bash
awk ' { 
        if ( $3 <= 25 ){
           print "User",$1,$2,"is less than 25 years old." ;
        }
        else {
           print "User",$1,$2,"is more than 25 years old" ; 
}
}'    ~/users.txt

फिर फ़ाइल सहेजें और बाहर निकलें, स्क्रिप्ट को निष्पादन योग्य बनाएं और इसे निम्नानुसार चलाएं:

$ chmod +x test.sh
$ ./test.sh
User Sarah L is more than 25 years old
User Aaron Kili is more than 25 years old
User John Doo is less than 25 years old.
User Kili Seth is more than 25 years old

2. कथन के लिए

यदि आप लूप में कुछ Awk कमांड्स निष्पादित करना चाहते हैं, तो स्टेटमेंट के लिए आपको नीचे दिए गए सिंटैक्स के साथ एक उपयुक्त तरीका प्रदान करना है:

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

for ( counter-initialization; test-condition; counter-increment ){
      actions
}

निम्नलिखित Awk कमांड से पता चलता है कि स्टेटमेंट कैसे काम करता है, जहां हम नंबर 0-10 प्रिंट करना चाहते हैं:

$ awk 'BEGIN{ for(counter=0;counter<=10;counter++){ print counter} }'
0
1
2
3
4
5
6
7
8
9
10

3. द स्टेटमेंट

इस कथन का पारंपरिक वाक्य विन्यास इस प्रकार है:

while ( condition ) {
          actions
}

यह शर्त एक Awk अभिव्यक्ति है और क्रियाएँ Awk कमांड्स की पंक्तियाँ होती हैं जब स्थिति सही होती है।

नीचे 0-10 नंबरों को प्रिंट करने के लिए स्टेटमेंट के उपयोग की व्याख्या करने के लिए एक स्क्रिप्ट है:

#!/bin/bash
awk ' BEGIN{ counter=0 ;
         
        while(counter<=10){
              print counter;
              counter+=1 ;
             
}
}  

फ़ाइल को सहेजें और स्क्रिप्ट को निष्पादन योग्य बनाएं, फिर उसे चलाएं:

$ chmod +x test.sh
$ ./test.sh
0
1
2
3
4
5
6
7
8
9
10

4. कथन करते समय

यह नीचे दिए गए कथन का एक संशोधन है, जिसमें निम्नलिखित अंतर्निहित सिंटैक्स हैं:

do {
     actions
}
 while (condition) 

मामूली अंतर यह है कि, स्थिति के मूल्यांकन से पहले, Awk कमांड निष्पादित किए जाते हैं। ऊपर दिए गए कथन के तहत बहुत ही उदाहरण का उपयोग करते हुए, हम परीक्षण में अस् कमांड को बदलकर करते समय उपयोग का वर्णन कर सकते हैं। स्क्रिप्ट इस प्रकार है:

#!/bin/bash

awk ' BEGIN{ counter=0 ;  
        do{
            print counter;  
            counter+=1 ;    
        }
        while (counter<=10)   
} 
'

स्क्रिप्ट को संशोधित करने के बाद, फ़ाइल को सहेजें और बाहर निकलें। फिर स्क्रिप्ट को निष्पादन योग्य बनाएं और इसे निम्नानुसार निष्पादित करें:

$ chmod +x test.sh
$ ./test.sh
0
1
2
3
4
5
6
7
8
9
10

निष्कर्ष

यह Awk flow control statement के बारे में एक व्यापक गाइड नहीं है, जैसा कि मैंने पहले भी बताया था कि Awk में कई अन्य फ्लो कंट्रोल स्टेटमेंट्स हैं।

बहरहाल, ऑक सीरीज़ के इस भाग में आपको एक स्पष्ट मौलिक विचार देना चाहिए कि कुछ शर्तों के आधार पर ऑक कमांड के निष्पादन को कैसे नियंत्रित किया जा सकता है।

आप विषय नियंत्रण पर अधिक समझ हासिल करने के लिए बाकी प्रवाह नियंत्रण कथनों पर अधिक विस्तार कर सकते हैं। अंत में, Awk श्रृंखला के अगले भाग में, हम Awk स्क्रिप्ट लिखने में आगे बढ़ेंगे।