কীভাবে আওক ভেরিয়েবল, সংখ্যাসূচক এক্সপ্রেশন এবং অ্যাসাইনমেন্ট অপারেটরগুলি ব্যবহার করবেন তা শিখুন - পার্ট 8


আওক কমান্ড সিরিজটি উত্তেজনাপূর্ণ হয়ে উঠছে আমি বিশ্বাস করি, পূর্ববর্তী সাতটি অংশে আমরা আউকের কয়েকটি ফান্ডামেন্টালগুলি পেরিয়েছি যেগুলি আপনাকে লিনাক্সে কিছু বেসিক পাঠ্য বা স্ট্রিং ফিল্টারিং করতে সক্ষম করার জন্য মাস্টার করা দরকার।

এই অংশটি দিয়ে শুরু করে, আমরা আরও জটিল পাঠ্য বা স্ট্রিং ফিল্টারিং ক্রিয়াকলাপ পরিচালনা করতে Awk এর অগ্রিম অঞ্চলে ডুব দেব। অতএব, আমরা ভেরিয়েবল, সংখ্যাগত এক্সপ্রেশন এবং অ্যাসাইনমেন্ট অপারেটরগুলির মতো Awk বৈশিষ্ট্যগুলি কভার করতে চলেছি।

এই ধারণাটি যেমন শেল, সি, পাইথন এবং আরও অনেকের আগে আপনি অনেকগুলি প্রোগ্রামিং ভাষায় সম্মুখীন হয়েছিলেন তার থেকে সম্পূর্ণ আলাদা নয়, সুতরাং এই বিষয়টি নিয়ে বেশি চিন্তা করার দরকার নেই, আমরা কেবল ব্যবহারের সাধারণ ধারণাগুলি সংশোধন করছি এই উল্লিখিত বৈশিষ্ট্য।

এটি সম্ভবত বোঝার জন্য সহজতম আওক কমান্ড বিভাগগুলির মধ্যে একটি হবে, সুতরাং পিছনে বসে আসুন।

1. আওক চলক

যে কোনও প্রোগ্রামিং ল্যাঙ্গুয়েজে ভেরিয়েবল হ'ল একটি স্থানধারক যা কোনও মান সংরক্ষণ করে, যখন আপনি কোনও প্রোগ্রামের ফাইলে কোনও ভেরিয়েবল তৈরি করেন, ফাইলটি কার্যকর হওয়ার সাথে সাথে কিছু স্থান মেমোরিতে তৈরি হয় যা ভেরিয়েবলের জন্য আপনার নির্দিষ্ট মানটিকে সংরক্ষণ করবে।

আপনি শেক ভেরিয়েবলগুলি নীচের মতো সংজ্ঞায়িত করতে একইভাবে আওক ভেরিয়েবলগুলি সংজ্ঞায়িত করতে পারেন:

variable_name=value 

উপরের সিনট্যাক্সে:

  1. ভেরিয়েবল_নাম : আপনি যে পরিবর্তনটি দিয়েছিলেন সেই নামটি
  2. মান : ভেরিয়েবলটিতে সঞ্চিত মান

আসুন নীচের কয়েকটি উদাহরণ দেখুন:

computer_name=”linux-console.net”
port_no=”22”
email=”[email ”
server=”computer_name”

উপরের সাধারণ উদাহরণগুলি একবার দেখুন, প্রথম ভেরিয়েবল সংজ্ঞাতে linux-console.net ভেরিয়েবল কম্পিউটার_নাম এ বরাদ্দ করা হয়েছে।

তদ্ব্যতীত, 22 ভেরিয়েবলটি পোর্ট_না বরাদ্দ করা হয়েছে, শেষের উদাহরণের মতো একটি ভেরিয়েবলের মান অন্য ভেরিয়েবলের জন্যও অর্পণ করা সম্ভব যেখানে আমরা মান নির্ধারিত করেছি ভেরিয়েবল সার্ভারে কম্পিউটারের নাম of

আপনি যদি প্রত্যাহার করতে পারেন, ঠিক এই আওক সিরিজের অংশ 2 থেকে আমরা ফিল্ড সম্পাদনাটি কভার করেছি, আমরা কীভাবে আওক ইনপুট লাইনগুলিকে ক্ষেত্রগুলিতে বিভক্ত করে এবং স্ট্যান্ডার্ড ফিল্ড অ্যাক্সেস অপারেটর ব্যবহার করে, $ বিভিন্ন ক্ষেত্রগুলি পড়তে ব্যবহার করেছি পার্স করা হয়েছে। ক্ষেত্রের মানগুলি নিম্নরূপে সঞ্চয় করতে আমরা ভেরিয়েবলগুলিও ব্যবহার করতে পারি।

first_name=$2
second_name=$3

উপরের উদাহরণগুলিতে, প্রথম_নাম এর মানটি দ্বিতীয় ক্ষেত্রে সেট করা হয়েছে এবং দ্বিতীয়_নাম তৃতীয় ক্ষেত্রে সেট করা আছে।

উদাহরণ হিসাবে, নাম.txt নামের একটি ফাইল বিবেচনা করুন যা কোনও অ্যাপ্লিকেশন ব্যবহারকারীদের তাদের প্রথম এবং শেষ নাম এবং আরও লিঙ্গ নির্দেশ করে এমন একটি তালিকা রয়েছে। ক্যাট কমান্ড ব্যবহার করে আমরা ফাইলের বিষয়বস্তু নীচে দেখতে পাচ্ছি:

$ cat names.txt

তারপরে, নীচে আওক কমান্ড চালিয়ে তালিকায় প্রথম ব্যবহারকারীর প্রথম এবং দ্বিতীয় নাম সংরক্ষণ করতে আমরা প্রথম_নাম এবং দ্বিতীয়_নাম ভেরিয়েবলগুলিও ব্যবহার করতে পারি:

$ awk '/Aaron/{ first_name=$2 ; second_name=$3 ; print first_name, second_name ; }' names.txt

আমাদের অন্য কেসটিও একবার দেখে নেওয়া যাক, আপনি যখন আপনার টার্মিনালে uname -a কমান্ডটি জারি করেন তখন এটি আপনার সমস্ত সিস্টেমের তথ্য মুদ্রণ করে।

দ্বিতীয় ক্ষেত্রটিতে আপনার হোস্টনাম রয়েছে, সুতরাং আমরা হোস্টনামটি হোস্টনাম নামে একটি ভেরিয়েবলে সংরক্ষণ করতে পারি এবং এটি Awk ব্যবহার করে মুদ্রণ করতে পারি:

$ uname -a
$ uname -a | awk '{hostname=$2 ; print hostname ; }' 

2. সংখ্যার এক্সপ্রেশন

ওওকে, সংখ্যাসূচক এক্সপ্রেশনগুলি নিম্নলিখিত সংখ্যক অপারেটরগুলি ব্যবহার করে নির্মিত হয়:

  1. * গুণক অপারেটর
  2. + : সংযোজন অপারেটর
  3. /: বিভাগ অপারেটর
  4. - : বিয়োগ অপারেটর
  5. % : মডুলাস অপারেটর
  6. ^: এক্সপেনশনেশন অপারেটর

একটি সংখ্যাসূচক এক্সপ্রেশন জন্য বাক্য গঠন:

$ operand1 operator operand2

উপরের ফর্মটিতে, অপরেন্ড 1 এবং অপারেন্ড 2 নম্বর বা ভেরিয়েবলের নাম হতে পারে এবং অপারেটর উপরের অপারেটরগুলির মধ্যে কোনও।

সংখ্যার এক্সপ্রেশন কীভাবে তৈরি করবেন তা প্রদর্শনের জন্য নীচে কয়েকটি উদাহরণ দেওয়া হল:

counter=0
num1=5
num2=10
num3=num2-num1
counter=counter+1

Awk এ সংখ্যাসূচক এক্সপ্রেশনগুলির ব্যবহার বুঝতে, আমরা নীচের নীচের উদাহরণটি বিবেচনা করব, ডোমেনস টেক্সট ফাইলটির সাথে, যেখানে টেকমিন্টের মালিকানাধীন সমস্ত ডোমেন রয়েছে।

news.linux-console.net
linux-console.net
linuxsay.com
windows.linux-console.net
linux-console.net
news.linux-console.net
linux-console.net
linuxsay.com
linux-console.net
news.linux-console.net
linux-console.net
linuxsay.com
windows.linux-console.net
linux-console.net

ফাইলের সামগ্রীগুলি দেখতে, নীচের কমান্ডটি ব্যবহার করুন:

$ cat domains.txt

যদি আমরা linux-console.net ডোমেনটি ফাইলে প্রদর্শিত হয় তার সংখ্যা গণনা করতে চাই, তবে এটি করার জন্য আমরা একটি সাধারণ স্ক্রিপ্ট লিখতে পারি:

#!/bin/bash
for file in [email ; do
        if [ -f $file ] ; then
                #print out filename
                echo "File is: $file"
                #print a number incrementally for every line containing linux-console.net 
                awk  '/^linux-console.net/ { counter=counter+1 ; printf "%s\n", counter ; }'   $file
        else
                #print error info incase input is not a file
                echo "$file is not a file, please specify a file." >&2 && exit 1
        fi
done
#terminate script with exit code 0 in case of successful execution 
exit 0

স্ক্রিপ্টটি তৈরি করার পরে, এটি সংরক্ষণ করুন এবং কার্যকর করতে সক্ষম করুন, যখন আমরা ফাইলটি domains.txt আউটপুট হিসাবে চালিত করি, আমরা নিম্নলিখিত আউটপুটটি পাই:

$ ./script.sh  ~/domains.txt

স্ক্রিপ্টের আউটপুট থেকে, ডোমেনস.টেক্সট ফাইলটিতে 6 টি লাইন রয়েছে যাতে আপনি সেগুলি ম্যানুয়ালি গণনা করতে পারবেন তা নিশ্চিত করার জন্য linux-console.net রয়েছে।

৩.সাইনমেন্ট অপারেটর

সর্বশেষ আওক বৈশিষ্ট্যটি আমরা কভার করব assign এসাইনমেন্ট অপারেটররা, ওউকে বেশ কয়েকটি এসাইনমেন্ট অপারেটর রয়েছে এবং এর মধ্যে নিম্নলিখিতগুলি রয়েছে:

  1. * = : গুণ গুণ নির্ধারক অপারেটর
  2. + = : অতিরিক্ত নিয়োগের অপারেটর
  3. /= : বিভাগ অ্যাসাইনমেন্ট অপারেটর
  4. - = : বিয়োগফল অপারেটর
  5. % = : মডুলাস এসাইনমেন্ট অপারেটর
  6. ^= : এক্সপেনসিয়েশন অ্যাসাইনমেন্ট অপারেটর

অওকের একটি অ্যাসাইনমেন্ট অপারেশনের সহজ বাক্য গঠনটি নিম্নরূপ:

$ variable_name=variable_name operator operand

উদাহরণ:

counter=0
counter=counter+1

num=20
num=num-1

আপনি ওউকের কার্যনির্বাহ সংক্ষিপ্ত করতে উপরের অ্যাসাইনমেন্ট অপারেটরগুলি ব্যবহার করতে পারেন, পূর্ববর্তী উদাহরণগুলি বিবেচনা করুন, আমরা নিম্নলিখিত ফর্মটিতে অ্যাসাইনমেন্টটি সম্পাদন করতে পারলাম:

variable_name operator=operand
counter=0
counter+=1

num=20
num-=1

অতএব, আমরা উপরে + = অ্যাসাইনমেন্ট অপারেটরটি ব্যবহার করে শেল স্ক্রিপ্টে Awk কমান্ডটি পরিবর্তন করতে পারি:

#!/bin/bash
for file in [email ; do
        if [ -f $file ] ; then
                #print out filename
                echo "File is: $file"
                #print a number incrementally for every line containing linux-console.net 
                awk  '/^linux-console.net/ { counter+=1 ; printf  "%s\n",  counter ; }'   $file
        else
                #print error info incase input is not a file
                echo "$file is not a file, please specify a file." >&2 && exit 1
        fi
done
#terminate script with exit code 0 in case of successful execution 
exit 0

আওক সিরিজের এই বিভাগে আমরা কয়েকটি শক্তিশালী আওক বৈশিষ্ট্যগুলি coveredেকে রেখেছি, সেটি হল ভেরিয়েবলগুলি, সংখ্যাসূচক এক্সপ্রেশন তৈরি করা এবং অ্যাসাইনমেন্ট অপারেটর ব্যবহার করে, পাশাপাশি আমরা কীভাবে সেগুলি ব্যবহার করতে পারি তার কয়েকটি কয়েকটি চিত্র rations

এই ধারণাগুলি অন্যান্য প্রোগ্রামিং ভাষাগুলির চেয়ে আলাদা নয় তবে অ্যাওক প্রোগ্রামিংয়ের অধীনে কিছু উল্লেখযোগ্য পার্থক্য থাকতে পারে।

৯ ম অংশে, আমরা আরও আওক বৈশিষ্ট্যগুলিতে বিশেষ প্যাটার্নগুলির দিকে নজর দেব: বিগিন এবং সমাপ্ত । ততক্ষণে, টেকমিন্টের সাথে সংযুক্ত থাকুন।