AWK একটি স্ক্রিপ্টিং ভাষা যা ডেটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়, এবং এটি বিভিন্ন ভেরিয়েবলস এবং ডেটা টাইপস সমর্থন করে। ভেরিয়েবলসকে AWK এর কার্যক্রমে বিভিন্ন মান সংরক্ষণ এবং ব্যবহার করার জন্য ব্যবহার করা হয়।
ভেরিয়েবলস
AWK এ ভেরিয়েবলস ডায়নামিক হয়, অর্থাৎ আপনি যেকোন সময় তাদের মান পরিবর্তন করতে পারেন। ভেরিয়েবলস ঘোষণা করার জন্য কোন নির্দিষ্ট সিনট্যাক্স নেই; আপনি সরাসরি ভেরিয়েবলে মান সেট করতে পারেন।
ভেরিয়েবল সংজ্ঞায়িত করা
একটি ভেরিয়েবলকে সাধারণত নিম্নলিখিতভাবে সংজ্ঞায়িত করা হয়:
variable_name = valueউদাহরণ
awk '{ total += $1 } END { print total }' filename.txtএখানে, total একটি ভেরিয়েবল যা প্রথম কলামের মানগুলোর যোগফল সংরক্ষণ করে।
AWK এর বিল্ট-ইন ভেরিয়েবলস
AWK কিছু বিল্ট-ইন ভেরিয়েবল সরবরাহ করে যা প্রোগ্রামারদের জন্য বিশেষভাবে কার্যকরী:
- NR: মোট রেকর্ডের সংখ্যা, অর্থাৎ, কতটি লাইন AWK প্রক্রিয়া করেছে।
- NF: বর্তমান রেকর্ডের ফিল্ডের সংখ্যা। এটি নির্দেশ করে যে বর্তমান লাইনে কতটি কলাম আছে।
- $0: সম্পূর্ণ বর্তমান রেকর্ড (লাইনের সমগ্র টেক্সট)।
- $1, $2, $3, ...: বর্তমান লাইনের নির্দিষ্ট কলাম। উদাহরণস্বরূপ,
$1প্রথম কলাম,$2দ্বিতীয় কলাম ইত্যাদি নির্দেশ করে।
ডেটা টাইপস
AWK এ ডেটা টাইপস এর প্রকারভেদ সাধারণত নিম্নরূপ:
সংখ্যা: AWK এ সংখ্যাকে স্বয়ংক্রিয়ভাবে শনাক্ত করা হয়। আপনি যে কোন সংখ্যা ভেরিয়েবলে নির্দিষ্ট করতে পারেন এবং গাণিতিক অপারেশন করতে পারেন। উদাহরণ:
awk 'BEGIN { x = 5; y = 10; sum = x + y; print sum }'স্ট্রিং: AWK স্ট্রিং ডেটা টাইপকেও সমর্থন করে। স্ট্রিংস সাধারণত ডাবল কোটেশন মার্কের মধ্যে রাখা হয়। উদাহরণ:
awk 'BEGIN { name = "John"; print "Hello, " name }'- অবজেক্ট: AWK এ অবজেক্ট ডেটা টাইপের ধারণা নেই, তবে ব্যবহারকারী স্ট্রিং এবং সংখ্যাকে অবজেক্টের মতো ব্যবহার করতে পারেন।
সারসংক্ষেপ
AWK একটি অত্যন্ত নমনীয় ভাষা যা ভেরিয়েবলস এবং ডেটা টাইপস এর কার্যকর ব্যবহার সমর্থন করে। এটি ব্যবহারকারীদের জন্য তথ্য সংগ্রহ এবং প্রক্রিয়াকরণে সাহায্য করে, যাতে তারা দ্রুত ফলাফল পেতে পারেন। AWK এর ভেরিয়েবলস এবং ডেটা টাইপস এর ধারণা ব্যবহার করে, আপনি আপনার স্ক্রিপ্টে শক্তিশালী লজিক এবং কার্যকারিতা যোগ করতে পারেন।
ডেটা টাইপ প্রোগ্রামিং ভাষার একটি মৌলিক উপাদান, যা বিভিন্ন ধরনের ডেটাকে সংরক্ষণ এবং পরিচালনা করার জন্য ব্যবহৃত হয়। প্রিমিটিভ ডেটা টাইপগুলি মূল ডেটা টাইপ, যা সাধারণত ভাষার মৌলিক কাঠামোর অংশ হিসেবে ব্যবহৃত হয়। এখানে আমরা দুটি প্রধান প্রিমিটিভ ডেটা টাইপ: String এবং Numeric সম্পর্কে আলোচনা করব।
String
String হল একটি ডেটা টাইপ যা অক্ষরের একটি সিরিজ (character sequence) সংরক্ষণ করে। এটি সাধারণত টেক্সট তথ্য উপস্থাপন করতে ব্যবহৃত হয়। একটি String ডেটা টাইপ বিভিন্ন অক্ষর যেমন অক্ষর, সংখ্যা, চিহ্ন, এবং স্পেসের সমন্বয়ে গঠিত হতে পারে।
String এর বৈশিষ্ট্য:
- নির্বাচনযোগ্য: Strings সাধারণত সহজেই নির্বাচিত এবং পরিবর্তন করা যায়।
- অক্ষরের সিরিজ: এটি অক্ষরের একটি সিরিজ হিসেবে কাজ করে, যেমন "Hello, World!"।
- অপারেশন: Strings-এর ওপর বিভিন্ন অপারেশন করা যায়, যেমন যোগফল (concatenation), substring extraction, এবং অনুসন্ধান (search)।
উদাহরণ:
একটি String তৈরি করা:
name = "Alice"String এর দুটি যোগফল করা:
greeting = "Hello, " + nameString এর দৈর্ঘ্য বের করা:
length = len(greeting) # ফলস্বরূপ: 12
Numeric
Numeric ডেটা টাইপগুলি সংখ্যা উপস্থাপন করতে ব্যবহৃত হয়। এটি সাধারণত দুটি প্রধান ধরনের সংখ্যা অন্তর্ভুক্ত করে: পূর্ণসংখ্যা (integers) এবং ভগ্নাংশ সংখ্যা (floating-point numbers)।
Numeric এর বৈশিষ্ট্য:
- পূর্ণসংখ্যা (Integer): পূর্ণসংখ্যা ডেটা টাইপ সমন্বিত পূর্ণ সংখ্যা উপস্থাপন করে, যেমন -1, 0, 1, 2 ইত্যাদি।
- ভগ্নাংশ সংখ্যা (Float): ভগ্নাংশ সংখ্যা দশমিক পয়েন্টের সাথে সংখ্যা উপস্থাপন করে, যেমন 3.14, -0.001, 2.5 ইত্যাদি।
- গণনা: Numeric ডেটা টাইপের উপর সাধারণ গাণিতিক অপারেশন যেমন যোগ, বিয়োগ, গুণ, ভাগ করা যায়।
উদাহরণ:
একটি পূর্ণসংখ্যা তৈরি করা:
age = 25একটি ভগ্নাংশ সংখ্যা তৈরি করা:
height = 5.9গাণিতিক অপারেশন করা:
total = age + 5 # ফলস্বরূপ: 30 average_height = (height + 6.0) / 2 # ফলস্বরূপ: 5.95
সারসংক্ষেপ
প্রিমিটিভ ডেটা টাইপস, যেমন String এবং Numeric, প্রোগ্রামিং ভাষার মৌলিক উপাদান। Strings টেক্সট তথ্য উপস্থাপন করতে ব্যবহৃত হয়, যেখানে Numeric ডেটা টাইপগুলি সংখ্যা উপস্থাপন করতে ব্যবহৃত হয়। এই ডেটা টাইপগুলির বৈশিষ্ট্য এবং অপারেশনগুলি প্রোগ্রামিংয়ে মৌলিক কাজগুলি সম্পাদনে সহায়তা করে, এবং তারা প্রোগ্রামারদের জন্য ডেটার সঠিক ব্যবহার নিশ্চিত করে।
AWK তে ভেরিয়েবল ডিক্লারেশন এবং Initialization একটি মৌলিক কিন্তু গুরুত্বপূর্ণ ধারণা। ভেরিয়েবল হল তথ্য সংরক্ষণের জন্য একটি নামকৃত স্থান, যেখানে আপনি ডেটা রাখতে এবং পরবর্তীতে ব্যবহার করতে পারেন। AWK তে ভেরিয়েবল তৈরি এবং ব্যবহার করা খুব সহজ।
ভেরিয়েবল ডিক্লারেশন
AWK তে ভেরিয়েবল ডিক্লারেশন করার জন্য কোনও বিশেষ কীওয়ার্ড প্রয়োজন হয় না। আপনি সরাসরি ভেরিয়েবল নাম লিখে তা ব্যবহারের সময় ডেটা অ্যাসাইন করতে পারেন। AWK স্বয়ংক্রিয়ভাবে এটি সনাক্ত করে এবং ভেরিয়েবল হিসেবে ব্যবহার করে।
উদাহরণ:
# ভেরিয়েবল ডিক্লারেশন
name = "Alice"
age = 30এখানে, name এবং age হল দুইটি ভেরিয়েবল, যেখানে যথাক্রমে "Alice" এবং 30 মান অ্যাসাইন করা হয়েছে।
Initialization
Initialization হল একটি ভেরিয়েবলের জন্য একটি প্রাথমিক মান সেট করা। AWK তে ভেরিয়েবল initialize করার সময়, আপনি সরাসরি ভেরিয়েবলের নাম লিখে মান সেট করতে পারেন।
উদাহরণ:
# Initialization
sum = 0 # একটি সংখ্যার যোগফল শুরুতে শূন্য
count = 1 # কাউন্টের জন্য একটি প্রাথমিক মানব্যবহার উদাহরণ
AWK তে ভেরিয়েবল ব্যবহার করার কিছু উদাহরণ নিচে উল্লেখ করা হলো:
সাধারণ ভেরিয়েবল ব্যবহার:
awk '{ sum += $1 # প্রথম কলামের মানের যোগফল count++ # সংখ্যা গোনা } END { average = sum / count # গড় বের করা print average # গড় প্রিন্ট করা }' data.txtশর্তাধীন ভেরিয়েবল ব্যবহার:
awk '{ if ($1 > 50) { status = "Pass" } else { status = "Fail" } print $1, status }' scores.txtঅবজেক্ট ভেরিয়েবল:
AWK তে ভেরিয়েবল ব্যবহার করে একটি অবজেক্ট তৈরি করা:
awk 'BEGIN { person["name"] = "Alice" person["age"] = 30 print person["name"], person["age"] }'
সারসংক্ষেপ
AWK তে ভেরিয়েবল ডিক্লারেশন এবং Initialization একটি গুরুত্বপূর্ণ অংশ যা ব্যবহারকারীদের ডেটা সংরক্ষণ এবং প্রক্রিয়াকরণের জন্য সহায়তা করে। এটি ভেরিয়েবল তৈরি করতে এবং প্রাথমিক মান সেট করতে সক্ষম, যা বিভিন্ন বিশ্লেষণাত্মক কাজকে সহজ করে তোলে। AWK এর মাধ্যমে ভেরিয়েবল ব্যবহার করে ডেটা বিশ্লেষণকে আরও কার্যকরী এবং ফলপ্রসূ করা সম্ভব।
AWK এর কিছু বিল্ট-ইন ভেরিয়েবল রয়েছে, যা ডেটা প্রসেসিং এবং বিশ্লেষণের জন্য অত্যন্ত কার্যকরী। নিচে এই ভেরিয়েবলগুলোর বর্ণনা, কাজ এবং উদাহরণ দেওয়া হলো:
১. NR (Number of Records)
- বর্ণনা:
NRবর্তমান প্রক্রিয়া করা রেকর্ডের সংখ্যা নির্দেশ করে। এটি প্রতিটি রেকর্ড পড়ার সময় বৃদ্ধি পায়। - ব্যবহার:
NRব্যবহার করে আপনি জানতে পারেন যে মোট কতগুলি রেকর্ড (লাইন) প্রক্রিয়া হয়েছে। উদাহরণ:
awk '{print NR, $0}' filename.txtএখানে প্রতিটি লাইনের সাথে তার রেকর্ড নম্বর প্রদর্শিত হবে।
২. NF (Number of Fields)
- বর্ণনা:
NFবর্তমান রেকর্ডের মোট ফিল্ডের সংখ্যা নির্দেশ করে। এটি একটি লাইনে কতগুলি ফিল্ড আছে তা চিহ্নিত করে। - ব্যবহার:
NFব্যবহার করে আপনি জানতে পারেন একটি রেকর্ডে মোট কতটি ফিল্ড রয়েছে। উদাহরণ:
awk '{print NF}' filename.txtএখানে প্রতিটি লাইনে ফিল্ডের সংখ্যা প্রদর্শিত হবে।
৩. FNR (File Number of Records)
- বর্ণনা:
FNRবর্তমান ফাইলের মধ্যে প্রক্রিয়া করা রেকর্ডের সংখ্যা নির্দেশ করে। এটি নতুন ফাইলের জন্য শূন্য থেকে শুরু হয়। - ব্যবহার: যখন একাধিক ফাইল প্রক্রিয়া করা হচ্ছে,
FNRব্যবহার করে আপনি একটি নির্দিষ্ট ফাইলে রেকর্ড সংখ্যা পেতে পারেন। উদাহরণ:
awk '{print FNR, $0}' file1.txt file2.txtএখানে
file1.txtএবংfile2.txtউভয় ফাইলের জন্য রেকর্ড সংখ্যা প্রদর্শিত হবে।
৪. FS (Field Separator)
- বর্ণনা:
FSইনপুট ফাইলের ফিল্ড সেপারেটরের জন্য ব্যবহৃত হয়। ডিফল্টরূপে এটি স্পেস বা ট্যাব। - ব্যবহার:
FSপরিবর্তন করে আপনি ফিল্ড সেপারেটরকে কাস্টমাইজ করতে পারেন। উদাহরণ:
awk 'BEGIN {FS=","} {print $1}' filename.csvএখানে CSV ফাইলের প্রথম ফিল্ড প্রিন্ট হবে, যেখানে ফিল্ডগুলি কমা দ্বারা পৃথক করা হয়েছে।
৫. RS (Record Separator)
- বর্ণনা:
RSইনপুট রেকর্ড সেপারেটরের জন্য ব্যবহৃত হয়। ডিফল্টরূপে এটি নতুন লাইন। - ব্যবহার:
RSপরিবর্তন করে আপনি কীভাবে ইনপুট ডেটা রেকর্ডে বিভক্ত হবে তা নির্ধারণ করতে পারেন। উদাহরণ:
awk 'BEGIN {RS=","} {print}' filename.txtএখানে ফাইলটি কমা দ্বারা বিভক্ত রেকর্ড হিসেবে পড়বে।
৬. OFS (Output Field Separator)
- বর্ণনা:
OFSআউটপুট ফিল্ড সেপারেটর নির্দেশ করে, যা আউটপুটে ফিল্ডগুলির মধ্যে ব্যবহৃত হবে। - ব্যবহার:
OFSব্যবহার করে আউটপুটের ফিল্ডগুলির মধ্যে স্পেস, কমা, বা অন্য কোনো চিহ্ন ব্যবহার করা যায়। উদাহরণ:
awk 'BEGIN {OFS=";"} {print $1, $2}' filename.txtএখানে আউটপুটের ফিল্ডগুলি সেমিকোলন দ্বারা পৃথক হবে।
৭. ORS (Output Record Separator)
- বর্ণনা:
ORSআউটপুট রেকর্ড সেপারেটর নির্দেশ করে, যা রেকর্ডগুলির মধ্যে ব্যবহৃত হবে। - ব্যবহার:
ORSপরিবর্তন করে, আপনি আউটপুট রেকর্ডগুলির মধ্যে ব্যবধান পরিবর্তন করতে পারেন। উদাহরণ:
awk 'BEGIN {ORS=" | "} {print $0}' filename.txtএখানে আউটপুটে প্রতিটি লাইনের মধ্যে " | " সেপারেটর যুক্ত হবে।
এই বিল্ট-ইন ভেরিয়েবলগুলি AWK এর কার্যকারিতা বৃদ্ধি করতে এবং ডেটা বিশ্লেষণের কাজকে আরও সহজ ও কার্যকর করতে সহায়ক। এই ভেরিয়েবলগুলি ব্যবহার করে আপনি প্রয়োজনীয় তথ্য বের করতে এবং ডেটা প্রসেসিংয়ে সময় সাশ্রয় করতে পারবেন।
AWK তে User-Defined Variables ব্যবহারকারীদের নিজস্ব ভেরিয়েবল তৈরি করার সুযোগ দেয়, যা ডেটা প্রক্রিয়াকরণে ব্যবহার করা হয়। এই ভেরিয়েবলগুলি ব্যবহার করে আপনি ডেটাকে স্টোর, প্রক্রিয়া এবং পরিচালনা করতে পারেন। ব্যবহারকারীর ভেরিয়েবল তৈরি করা খুবই সহজ এবং এটি AWK স্ক্রিপ্টের কার্যকারিতা বাড়ায়।
User-Defined Variables এর সুবিধা
- ডেটা স্টোরেজ: ব্যবহারকারীরা ভেরিয়েবলে ডেটা সংরক্ষণ করতে পারেন, যা পরবর্তী সময়ে ব্যবহার করা যেতে পারে।
- গণনা ও হিসাব: ব্যবহারকারীরা গাণিতিক অপারেশন সম্পাদন করতে এবং ফলাফল সংরক্ষণ করতে পারেন।
- জটিল লজিক: স্ক্রিপ্টের মধ্যে জটিল লজিক তৈরি করতে ব্যবহারকারীদের ভেরিয়েবল সাহায্য করে।
User-Defined Variables এর ব্যবহার
1. ভেরিয়েবল ঘোষণা এবং সেট করা
AWK তে ব্যবহারকারীরা ভেরিয়েবল ঘোষণা করতে এবং সেট করতে পারেন। উদাহরণস্বরূপ:
awk '{count += 1} END {print "Total lines:", count}' filename.txtএখানে count একটি ব্যবহারকারীর ভেরিয়েবল, যা লাইন সংখ্যা গুনতে ব্যবহার করা হয়েছে।
2. ভেরিয়েবল ব্যবহার করা
ব্যবহারকারীরা ভেরিয়েবলকে AWK এর মধ্যে বিভিন্নভাবে ব্যবহার করতে পারেন:
গণনা: ব্যবহারকারী ভেরিয়েবল ব্যবহার করে গাণিতিক অপারেশন করতে পারেন।
awk '{sum += $1} END {print "Sum:", sum}' data.txtশর্তাধীন কার্যক্রম: ভেরিয়েবল ব্যবহার করে শর্ত তৈরি করতে পারেন।
awk '{if ($1 > threshold) count += 1} END {print "Count:", count}' threshold=10 data.txt
3. ইনপুট এবং আউটপুট
ব্যবহারকারীরা ভেরিয়েবল ব্যবহার করে ইনপুট এবং আউটপুট প্রক্রিয়া করতে পারেন। উদাহরণস্বরূপ:
awk -v prefix="Name: " '{print prefix $1}' data.txtএখানে prefix একটি ভেরিয়েবল যা আউটপুটের আগে যুক্ত হয়।
উদাহরণ
- বহু ভেরিয়েবল ব্যবহার:
awk '{total += $2; count += 1} END {print "Average:", total/count}' filename.txtএখানে total এবং count দুটি ব্যবহারকারীর ভেরিয়েবল যা গড় নির্ণয়ে সহায়তা করে।
- অন্য ফাইলের ডেটা ব্যবহার:
awk 'FNR==NR {threshold=$1; next} $2 > threshold {print $1}' threshold.txt data.txtএখানে প্রথম ফাইল থেকে threshold ভেরিয়েবলটি দ্বিতীয় ফাইলে ব্যবহার করা হয়েছে।
সারসংক্ষেপ
AWK তে User-Defined Variables একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা ব্যবহারকারীদের তাদের নিজস্ব ভেরিয়েবল তৈরি এবং ব্যবহার করার সুযোগ দেয়। এটি ডেটা প্রক্রিয়াকরণ এবং বিশ্লেষণের কাজকে আরও সহজ করে। ব্যবহারকারীরা ভেরিয়েবল ব্যবহার করে গণনা, শর্তাধীন কার্যক্রম এবং জটিল লজিক তৈরি করতে সক্ষম হন, যা তাদের কাজকে আরও কার্যকর করে। AWK তে ভেরিয়েবলের ব্যবহার স্ক্রিপ্টগুলির শক্তি এবং নমনীয়তা বাড়ায়, এবং এটি ব্যবহারকারীদের তাদের কাজের জন্য উন্নত সলিউশন তৈরি করতে সাহায্য করে।
Read more