Awk - পার্ট 12 এ ফ্লো কন্ট্রোল স্টেটমেন্টগুলি কীভাবে ব্যবহার করবেন
আপনি এখনও অবধি যে সমস্ত আওক উদাহরণগুলি পর্যালোচনা করেছেন তা পর্যালোচনা করুন যখন কিছু শর্তের উপর ভিত্তি করে পাঠ্য ফিল্টারিং কার্যক্রম শুরু করা হয়, সেখান থেকেই প্রবাহ নিয়ন্ত্রণের বিবৃতিগুলির পদ্ধতির সেট হয়।
অ্যাওক প্রোগ্রামিংয়ে বিভিন্ন প্রবাহ নিয়ন্ত্রণের বিবৃতি রয়েছে এবং এর মধ্যে রয়েছে:
- যদি-অন্য বিবৃতি
- বিবৃতি জন্য
- বিবৃতি দেওয়ার সময়
- করণীয় বিবৃতি
- ব্রেক স্টেটমেন্ট
- বিবৃতি চালিয়ে যান
- পরবর্তী বিবৃতি
- নেক্সটফিল স্টেটমেন্ট
- প্রস্থান বিবৃতি
যাইহোক, এই সিরিজের পরিধিগুলির জন্য, আমরা এখানে ব্যাখ্যা করব: if-else
,
এর জন্য
এবং
বিবৃতি। মনে রাখবেন যে আমরা ইতিমধ্যে Awk সিরিজটি পেরিয়েছি।
1. যদি-অন্য বিবৃতি
বিবৃতি
এর প্রত্যাশিত বাক্য গঠন যদি বিবৃতিতে শেলের সাথে সাদৃশ্য থাকে:
if (condition1) { actions1 } else { actions2 }
উপরের সিনট্যাক্সে, কন্ডিশন 1
এবং শর্ত 2
হ'ল অবাক এক্সপ্রেশন এবং ক্রিয়াকলাপ 1
এবং ক্রিয়া 2
যখন আওক কমান্ড কার্যকর করা হয় সম্পর্কিত শর্ত সন্তুষ্ট
যখন কন্ডিশন 1 সন্তুষ্ট হয়, যার অর্থ এটি সত্য, তারপরে ক্রিয়া 1 কার্যকর করা হয় এবং যদি বিবৃতিটি প্রস্থান হয়, অন্যথায় ক্রিয়া 2 কার্যকর করা হয়।
নীচের মত যদি বিবৃতিটি if-else_if-else
বিবৃতিতেও প্রসারিত করা যায়:
if (condition1){ actions1 } else if (conditions2){ actions2 } else{ actions3 }
উপরের ফর্মের জন্য, কন্ডিশন 1 সত্য হলে, ক্রিয়া 1 কার্যকর করা হয় এবং যদি বিবৃতিটি প্রস্থান হয়, অন্যথায় শর্ত 2 মূল্যায়ন করা হয় এবং যদি এটি সত্য হয়, তবে ক্রিয়া 2 কার্যকর করা হয় এবং যদি বিবৃতিটি প্রস্থান হয়। যাইহোক, যখন কন্ডিশন 2 তখন মিথ্যা হয়, ক্রিয়া 3 কার্যকর হয় এবং যদি বিবৃতিটি প্রস্থান হয়।
বিবৃতি ব্যবহার করার ক্ষেত্রে এখানে একটি কেস দেওয়া আছে, আমাদের কাছে ব্যবহারকারী এবং তাদের বয়সগুলি ফাইল, ইউজার্স টেক্সটে সংরক্ষিত রয়েছে।
আমরা ব্যবহারকারীর নাম এবং ব্যবহারকারীর বয়স 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 }
নিম্নলিখিত আওক কমান্ডটি বিবৃতিটি কীভাবে কাজ করে তা দেখায়, যেখানে আমরা 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 }
কন্ডিশনটি একটি অ্যাওক এক্সপ্রেশন এবং কন্ডিশন সত্য হওয়ার সাথে সাথে এক্সক্লুসিভ করা আওক কমান্ডের লাইন actions
নীচে 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 ফ্লো কন্ট্রোল স্টেটমেন্ট সম্পর্কিত কোনও বিস্তৃত গাইড নয়, যেমনটি আমি আগেই বলেছি যে, আওক-এ আরও বেশ কয়েকটি প্রবাহ নিয়ন্ত্রণের বিবৃতি রয়েছে।
তা সত্ত্বেও, অ্যাওউক সিরিজের এই অংশটি আপনাকে কীভাবে নির্দিষ্ট শর্তাবলীর উপর ভিত্তি করে ওউকে আদেশগুলি কার্যকর করতে নিয়ন্ত্রণ করতে পারে তার একটি পরিষ্কার মৌলিক ধারণা দেওয়া উচিত।
বিষয়টি সম্পর্কে আরও বোঝার জন্য আপনি বাকী প্রবাহ নিয়ন্ত্রণের বিবৃতিগুলিতে আরও ব্যাখ্যা করতে পারেন। অবশেষে, পশুর সিরিজের পরবর্তী বিভাগে, আমরা Awk স্ক্রিপ্টগুলি লেখার দিকে এগিয়ে চলব।