Nested Loops এবং তাদের প্রয়োগ

AWK এ লুপিং স্ট্রাকচার (Looping Structures in AWK) - অক (Awk) - Computer Programming

530

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

Content added By
Promotion

Are you sure to start over?

Loading...