AWK এ লুপিং স্ট্রাকচার ব্যবহার করে ব্যবহারকারীরা ডেটা সেটের উপর পুনরাবৃত্তি করতে পারেন, যা ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণের জন্য অত্যন্ত কার্যকর। AWK এ প্রধান লুপিং স্ট্রাকচারগুলি হল for, while, এবং do while।
১. for লুপ
for লুপ একটি নির্দিষ্ট সংখ্যা বা একটি সারণীর সমস্ত আইটেমের উপর পুনরাবৃত্তি করতে ব্যবহৃত হয়। এটি তিনটি অংশ নিয়ে গঠিত: সূচনা, শর্ত, এবং আপডেট।
সিনট্যাক্স:
for (initialization; condition; update) {
action;
}উদাহরণ:
awk 'BEGIN {
for (i = 1; i <= 5; i++) {
print "Number: " i;
}
}'এটি 1 থেকে 5 পর্যন্ত সংখ্যা প্রিন্ট করবে।
২. while লুপ
while লুপ একটি শর্ত সত্য থাকা পর্যন্ত পুনরাবৃত্তি করে। এটি সাধারণত তখন ব্যবহৃত হয় যখন লুপের সংখ্যা আগে থেকে জানা থাকে না।
সিনট্যাক্স:
while (condition) {
action;
}উদাহরণ:
awk 'BEGIN {
i = 1;
while (i <= 5) {
print "Number: " i;
i++;
}
}'এটি 1 থেকে 5 পর্যন্ত সংখ্যা প্রিন্ট করবে।
৩. do while লুপ
do while লুপ অন্তত একবার কার্যকর হয় এবং তারপরে শর্ত পরীক্ষা করে। যদি শর্ত সত্য হয়, তবে এটি পুনরাবৃত্তি করতে থাকে।
সিনট্যাক্স:
do {
action;
} while (condition);উদাহরণ:
awk 'BEGIN {
i = 1;
do {
print "Number: " i;
i++;
} while (i <= 5);
}'এটি 1 থেকে 5 পর্যন্ত সংখ্যা প্রিন্ট করবে।
৪. লুপিং স্ট্রাকচারের ব্যবহার
লুপিং স্ট্রাকচারগুলি ডেটা প্রক্রিয়াকরণের সময় কার্যকরী হতে পারে। উদাহরণস্বরূপ, একটি ফাইলের মধ্যে প্রতিটি লাইন পড়ার জন্য একটি while লুপ ব্যবহার করা যেতে পারে।
উদাহরণ:
awk '{
sum += $1
} END {
print "Total sum: " sum
}' filename.txtএখানে, AWK ফাইলের প্রতিটি লাইনের প্রথম কলামের মান যোগ করে এবং শেষে মোট যোগফল প্রিন্ট করে।
সারসংক্ষেপ
AWK এ লুপিং স্ট্রাকচারগুলি একটি শক্তিশালী উপায় যা ব্যবহারকারীদের ডেটা সেটের উপর পুনরাবৃত্তি করতে এবং কার্যক্রম সম্পন্ন করতে সাহায্য করে। for, while, এবং do while লুপগুলি ব্যবহার করে, ব্যবহারকারীরা তাদের স্ক্রিপ্টে জটিল লজিক এবং কার্যকরীতা যুক্ত করতে পারেন। AWK এর লুপিং স্ট্রাকচারগুলি ডেটা বিশ্লেষণ এবং প্রসেসিংয়ে দক্ষতা বাড়াতে সহায়ক।
for লুপ হল প্রোগ্রামিংয়ের একটি কাঠামো যা একটি নির্দিষ্ট সংখ্যা পর্যন্ত কোডের একটি ব্লককে পুনরাবৃত্তি করতে ব্যবহৃত হয়। এটি সাধারণত একটি নির্দিষ্ট সেকেনস বা কালেকশনের প্রতিটি উপাদানের জন্য কাজ করতে ব্যবহৃত হয়। for লুপের সাহায্যে আপনি সহজেই একটি তালিকা, অ্যারে, অথবা কোন iterable অবজেক্টের উপর কাজ করতে পারেন।
for লুপের সিনট্যাক্স
সাধারণভাবে, for লুপের সিনট্যাক্স নিম্নরূপ:
for variable in iterable:
# কোড ব্লকএখানে:
variableহল একটি পরিবর্তনশীল যা প্রতিটি পুনরাবৃত্তিতে iterable-এর একটি উপাদান ধারণ করে।iterableহল একটি কালেকশন, যেমন একটি তালিকা, টুপল, বা স্ট্রিং।
উদাহরণ
- তালিকা (List) ব্যবহার করে:
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)এই উদাহরণে, fruits তালিকার প্রতিটি উপাদান (fruit) পুনরাবৃত্তি করে এবং তা প্রিন্ট করবে। আউটপুট হবে:
apple
banana
cherry- রেঞ্জ (Range) ব্যবহার করে:
for i in range(5):
print(i)এখানে range(5) 0 থেকে 4 পর্যন্ত সংখ্যাগুলি উৎপন্ন করবে, এবং লুপের মধ্যে i প্রতি পুনরাবৃত্তিতে একটি সংখ্যা ধারণ করবে। আউটপুট হবে:
0
1
2
3
4- স্ট্রিং-এর উপর:
word = "Hello"
for letter in word:
print(letter)এই উদাহরণে, স্ট্রিংয়ের প্রতিটি অক্ষর letter হিসেবে পুনরাবৃত্তি হবে এবং তা প্রিন্ট করবে। আউটপুট হবে:
H
e
l
l
o- একাধিক তালিকা (Nested Loops):
colors = ["red", "green", "blue"]
fruits = ["apple", "banana", "cherry"]
for color in colors:
for fruit in fruits:
print(color, fruit)এই উদাহরণে, colors এবং fruits উভয় তালিকার জন্য একটি নেস্টেড লুপ ব্যবহৃত হয়েছে। আউটপুট হবে:
red apple
red banana
red cherry
green apple
green banana
green cherry
blue apple
blue banana
blue cherryসারসংক্ষেপ
for লুপ একটি অত্যন্ত শক্তিশালী এবং কার্যকরী প্রোগ্রামিং কাঠামো, যা আপনাকে নির্দিষ্ট সংখ্যক বার কোডের একটি ব্লক পুনরাবৃত্তি করতে এবং বিভিন্ন ডেটা স্ট্রাকচারের উপর কাজ করতে সহায়তা করে। এটি সহজ এবং পরিষ্কার কোড লেখার জন্য সহায়ক, যা ডেটা বিশ্লেষণ এবং ম্যানিপুলেশনকে অনেক সহজ করে তোলে।
while এবং do-while লুপ দুটি গুরুত্বপূর্ণ লুপিং কনস্ট্রাক্ট যা প্রোগ্রামিং ভাষায় ব্যবহার করা হয়। AWK তে এই লুপগুলি একটি শর্তের ভিত্তিতে কোডের একটি ব্লক পুনরাবৃত্তি করতে ব্যবহৃত হয়। তাদের মধ্যে প্রধান পার্থক্য হল, while লুপের মধ্যে শর্তটি লুপের শুরুতে পরীক্ষা করা হয়, যখন do-while লুপের মধ্যে শর্তটি লুপের শেষে পরীক্ষা করা হয়।
while লুপ
while লুপটি একটি নির্দিষ্ট শর্ত সত্য হওয়া পর্যন্ত কোডের একটি ব্লক চালিয়ে যায়। যখন শর্তটি মিথ্যা হয়ে যায়, লুপটি বন্ধ হয়ে যায়।
সিনট্যাক্স:
while (condition) {
# কোডের ব্লক
}উদাহরণ:
awk '{
count = 1
while (count <= 5) {
print $1, count
count++
}
}' data.txtএখানে, count এর মান 1 থেকে 5 পর্যন্ত বাড়ানো হয় এবং $1 কলামের মানের সাথে প্রতিটি সংখ্যা প্রিন্ট হয়।
do-while লুপ
do-while লুপটি অন্তত একবার কোডের ব্লকটি চালাতে নিশ্চিত করে, কারণ শর্তটি কোড ব্লকের শেষে পরীক্ষা করা হয়। যদি শর্তটি সত্য হয়, তবে এটি আবার চালানো হয়।
সিনট্যাক্স:
do {
# কোডের ব্লক
} while (condition);উদাহরণ:
awk '{
count = 1
do {
print $1, count
count++
} while (count <= 5)
}' data.txtএখানে, লুপটি অন্তত একবার চলবে এবং count 5 এর চেয়ে ছোট বা সমান থাকলে পুনরায় চলবে।
প্রধান পার্থক্য
- শর্ত পরীক্ষা:
whileলুপের মধ্যে শর্তটি প্রথমে পরীক্ষা করা হয়, এবং যদি শর্তটি মিথ্যা হয়, তবে লুপ কখনও কার্যকর হয় না। অন্যদিকে,do-whileলুপে অন্তত একবার কোডের ব্লক কার্যকর হয়, কারণ শর্তটি পরে পরীক্ষা করা হয়। - লুপের অন্তর্ভুক্তি:
whileলুপের জন্য লুপের শরীরের অন্তর্ভুক্তির সময় শর্তটি মিথ্যা হলে লুপটি সম্পূর্ণরূপে বাদ দেওয়া হতে পারে, যেখানেdo-whileলুপের অন্তত একটি পুনরাবৃত্তি নিশ্চিত।
সারসংক্ষেপ
while এবং do-while লুপগুলি AWK এবং অন্যান্য প্রোগ্রামিং ভাষায় কোডের একটি ব্লক পুনরাবৃত্তি করার জন্য ব্যবহৃত হয়। while লুপ শর্ত সত্য হওয়া পর্যন্ত কাজ করে, যেখানে do-while লুপ অন্তত একবার কাজ করে এবং তারপর শর্ত পরীক্ষা করে। এই লুপগুলি ব্যবহার করে ব্যবহারকারীরা বিভিন্ন শর্ত এবং ডেটা প্রক্রিয়াকরণের কাজ করতে সক্ষম হন, যা তাদের প্রোগ্রামের কার্যকারিতা বৃদ্ধি করে।
AWK প্রোগ্রামিং ভাষায় break এবং continue এর মতো কন্ট্রোল স্টেটমেন্টগুলি লুপের কার্যকারিতা নিয়ন্ত্রণ করতে ব্যবহৃত হয়। এগুলি একটি লুপের মধ্যে অবস্থার ভিত্তিতে কার্যক্রম নিয়ন্ত্রণ করতে সহায়তা করে। নিচে এই দুটি কন্ট্রোল স্টেটমেন্টের ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করা হলো।
১. Break
break স্টেটমেন্ট ব্যবহার করে একটি লুপকে তৎক্ষণাৎ শেষ করা যায়। যখন break ব্যবহার করা হয়, তখন লুপের Execution থামিয়ে দেওয়া হয় এবং নিয়ন্ত্রণ পরবর্তী Statement এ চলে যায়।
উদাহরণ: Break ব্যবহার করে
awk '{
for (i = 1; i <= 10; i++) {
if (i == 5) {
break; # যখন i 5 হয়, লুপ থেকে বেরিয়ে যাবে
}
print i; # 1 থেকে 4 প্রিন্ট হবে
}
}' filename.txtএখানে, i যখন 5 হয় তখন break স্টেটমেন্ট কার্যকর হবে এবং লুপটি থামবে।
২. Continue
continue স্টেটমেন্ট ব্যবহার করে বর্তমান লুপের Iteration বাদ দেওয়া যায় এবং পরবর্তী Iteration এ চলে যায়। যখন continue ব্যবহৃত হয়, তখন লুপের বর্তমান Iteration সম্পন্ন হয় এবং পরবর্তী Iteration শুরু হয়।
উদাহরণ: Continue ব্যবহার করে
awk '{
for (i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; # যখন i জোড় সংখ্যা হয়, তখন সেই Iteration বাদ দেওয়া হবে
}
print i; # শুধুমাত্র বিজোড় সংখ্যা (1, 3, 5, 7, 9) প্রিন্ট হবে
}
}' filename.txtএখানে, i যদি জোড় সংখ্যা হয় তাহলে continue কার্যকর হবে এবং সেই Iteration বাদ দেওয়া হবে, ফলে কেবল বিজোড় সংখ্যাগুলি প্রিন্ট হবে।
সারসংক্ষেপ
- Break: একটি লুপ থেকে বেরিয়ে আসার জন্য ব্যবহৃত হয়। এটি লুপের Execution থামিয়ে দেয়।
- Continue: বর্তমান লুপের Iteration বাদ দিয়ে পরবর্তী Iteration শুরু করার জন্য ব্যবহৃত হয়।
AWK এ break এবং continue ব্যবহার করে লুপের কার্যক্রম নিয়ন্ত্রণ করা সহজ এবং কার্যকর। এই কন্ট্রোল স্টেটমেন্টগুলি বিশেষভাবে ডেটা প্রক্রিয়াকরণ এবং বিশ্লেষণের সময় উপকারী হতে পারে, যেখানে কিছু নির্দিষ্ট শর্তের উপর ভিত্তি করে কার্যক্রম সম্পাদন করতে হয়।
নেস্টেড লুপস হল লুপের মধ্যে একটি লুপ। AWK তে নেস্টেড লুপ ব্যবহার করে একাধিক স্তরের ডেটা প্রক্রিয়াকরণের কাজ করা যায়। এটি ডেটা টেবিল, ম্যাট্রিক্স, অথবা যখন একাধিক ডেটা সেটের সাথে কাজ করা হয় তখন উপকারী।
AWK তে নেস্টেড লুপের সিনট্যাক্স
AWK তে নেস্টেড লুপের সাধারণ গঠন হল:
awk '{
for (i = 1; i <= N; i++) {
for (j = 1; j <= M; j++) {
# কিছু কাজ
}
}
}' filenameএখানে, N এবং M হল লুপের সীমা। প্রথম লুপটি i পরিবর্তনশীলের মাধ্যমে চলবে এবং তার মধ্যে দ্বিতীয় লুপটি j পরিবর্তনশীলের মাধ্যমে চলবে।
উদাহরণ ১: টেবিলের তথ্য প্রক্রিয়াকরণ
ধরা যাক, আমাদের কাছে একটি টেক্সট ফাইল matrix.txt রয়েছে যার মধ্যে কিছু সংখ্যা আছে:
1 2 3
4 5 6
7 8 9আমরা চাই প্রতিটি সংখ্যার ওপর গুনফল করতে এবং ফলাফল প্রিন্ট করতে।
awk '{
for (i = 1; i <= NF; i++) {
for (j = 1; j <= NF; j++) {
product = $i * $j
print "Product of " $i " and " $j " is: " product
}
}
}' matrix.txtফলাফল:
Product of 1 and 1 is: 1
Product of 1 and 2 is: 2
Product of 1 and 3 is: 3
Product of 2 and 1 is: 2
Product of 2 and 2 is: 4
Product of 2 and 3 is: 6
...এখানে, প্রথম লুপ i ব্যবহার করে প্রতি ফিল্ডের মানের জন্য এবং দ্বিতীয় লুপ j ব্যবহার করে অন্য ফিল্ডের সাথে গুণফল করা হয়েছে।
উদাহরণ ২: ম্যাট্রিক্স ট্রান্সপোজ করা
একটি 2D ম্যাট্রিক্সের ট্রান্সপোজ তৈরি করতে নেস্টেড লুপ ব্যবহার করা যেতে পারে। ধরুন আমাদের কাছে নিম্নলিখিত matrix.txt ফাইল রয়েছে:
1 2 3
4 5 6
7 8 9আমরা এটিকে ট্রান্সপোজ করতে চাই:
awk '{
for (i = 1; i <= NF; i++) {
matrix[NR, i] = $i
}
rows = NR
}
END {
for (i = 1; i <= NF; i++) {
for (j = 1; j <= rows; j++) {
printf "%d ", matrix[j, i]
}
print ""
}
}' matrix.txtফলাফল:
1 4 7
2 5 8
3 6 9 এখানে, প্রথম লুপটি প্রতিটি সংখ্যা ম্যাট্রিক্সে সংরক্ষণ করে এবং দ্বিতীয় লুপটি ট্রান্সপোজ আউটপুট তৈরি করে।
উদাহরণ ৩: সংখ্যা জেনারেট করা
ধরা যাক, আমরা 1 থেকে 3 পর্যন্ত সংখ্যার জন্য 1 থেকে 3 পর্যন্ত সংখ্যা জেনারেট করতে চাই:
awk '{
for (i = 1; i <= 3; i++) {
for (j = 1; j <= 3; j++) {
print "i: " i ", j: " j
}
}
}' filenameফলাফল:
i: 1, j: 1
i: 1, j: 2
i: 1, j: 3
i: 2, j: 1
i: 2, j: 2
i: 2, j: 3
i: 3, j: 1
i: 3, j: 2
i: 3, j: 3এখানে, প্রথম লুপ i এর জন্য এবং দ্বিতীয় লুপ j এর জন্য কাজ করছে, এবং তাদের সাথে সমস্ত সম্ভাব্য সংমিশ্রণ প্রিন্ট করছে।
সারসংক্ষেপ
AWK তে নেস্টেড লুপস ব্যবহার করে ডেটা টেবিল, ম্যাট্রিক্স, অথবা একাধিক ডেটা সেটের সাথে কাজ করা যায়। এটি জটিল ডেটা প্রক্রিয়াকরণের জন্য অত্যন্ত কার্যকর। AWK এর শক্তিশালী লজিক্যাল অপারেটর এবং লুপিং কাঠামোর মাধ্যমে ডেটা বিশ্লেষণের কাজকে আরও সহজ এবং দ্রুত করা সম্ভব।
Read more