নেস্টেড লুপস হল লুপের মধ্যে একটি লুপ। 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 এর শক্তিশালী লজিক্যাল অপারেটর এবং লুপিং কাঠামোর মাধ্যমে ডেটা বিশ্লেষণের কাজকে আরও সহজ এবং দ্রুত করা সম্ভব।