Multiple Files এর সাথে কাজ করা
AWK একটি শক্তিশালী টুল যা একই সময়ে একাধিক ফাইল প্রক্রিয়াকরণে সক্ষম। এটি আপনাকে বিভিন্ন ফাইল থেকে ডেটা ফিল্টার করা, বিশ্লেষণ করা এবং আউটপুট তৈরি করতে সহায়তা করে। AWK যখন একাধিক ফাইল নিয়ে কাজ করে, তখন প্রতিটি ফাইলের জন্য ডেটা লাইন বাই লাইন পড়া হয় এবং প্রক্রিয়াকরণ করা হয়।
একাধিক ফাইল প্রক্রিয়াকরণের মৌলিক ধারণা
AWK ব্যবহার করে একাধিক ফাইল একসাথে প্রক্রিয়া করার জন্য, ফাইলের নামগুলি AWK কমান্ডের শেষে একের পর এক তালিকাভুক্ত করা হয়। AWK নিজেই প্রতিটি ফাইল প্রক্রিয়া করে এবং FILENAME ভেরিয়েবল ব্যবহার করে বর্তমান ফাইলের নাম চিহ্নিত করা যায়।
মৌলিক সিনট্যাক্স:
awk 'pattern { action }' file1.txt file2.txt ...উদাহরণ ১: একাধিক ফাইল থেকে ডেটা প্রিন্ট করা
awk '{ print $1, $2 }' file1.txt file2.txtএটি file1.txt এবং file2.txt থেকে প্রতিটি লাইনের প্রথম এবং দ্বিতীয় ফিল্ড প্রিন্ট করবে।
উদাহরণ ২: FILENAME ভেরিয়েবলের ব্যবহার
AWK-এর বিল্ট-ইন ভেরিয়েবল FILENAME ব্যবহার করে আপনি জানতে পারবেন কোন ফাইল থেকে বর্তমানে ডেটা পড়া হচ্ছে।
awk '{ print FILENAME ": " $0 }' file1.txt file2.txtএই কমান্ডটি প্রতিটি লাইনের সামনে ফাইলের নামসহ পুরো লাইন প্রিন্ট করবে।
আউটপুট:
file1.txt: Line 1 of file1
file1.txt: Line 2 of file1
file2.txt: Line 1 of file2
file2.txt: Line 2 of file2উদাহরণ ৩: প্রতিটি ফাইলের জন্য আলাদা প্রক্রিয়াকরণ
AWK-তে FNR ভেরিয়েবল ব্যবহার করে প্রতিটি ফাইলের লাইন নম্বর ট্র্যাক করা যায়। NR ভেরিয়েবল পুরো প্রক্রিয়াকরণের জন্য মোট লাইন নম্বর ট্র্যাক করে, কিন্তু FNR প্রতিটি ফাইলের জন্য পুনরায় শুরু হয়।
awk 'FNR == 1 { print "Processing file:", FILENAME } { print $0 }' file1.txt file2.txtএই স্ক্রিপ্টটি প্রতিটি নতুন ফাইলের শুরুতে ফাইলের নাম প্রিন্ট করবে এবং তারপরে প্রতিটি লাইন প্রিন্ট করবে।
উদাহরণ ৪: একাধিক ফাইল থেকে নির্দিষ্ট তথ্য সংগ্রহ করা
ধরা যাক, আপনি দুটি ফাইল থেকে দ্বিতীয় কলামের যোগফল বের করতে চান।
awk '{ sum += $2 } END { print "Total sum of second column:", sum }' file1.txt file2.txtএটি file1.txt এবং file2.txt থেকে দ্বিতীয় কলামের সমস্ত মানের যোগফল প্রিন্ট করবে।
উদাহরণ ৫: নির্দিষ্ট ফাইলের ডেটা ফিল্টার করা
AWK-এর if শর্ত ব্যবহার করে, আপনি নির্দিষ্ট ফাইলের ডেটা ফিল্টার করতে পারেন।
awk 'FILENAME == "file1.txt" && $1 ~ /pattern/ { print $0 }' file1.txt file2.txtএটি শুধুমাত্র file1.txt থেকে প্রথম ফিল্ডে "pattern" থাকা লাইনগুলো প্রিন্ট করবে।
সারসংক্ষেপ
AWK ব্যবহার করে একাধিক ফাইল প্রক্রিয়াকরণ একটি অত্যন্ত কার্যকরী পদ্ধতি, যা ডেটা বিশ্লেষণ এবং ফিল্টার করার কাজকে সহজ করে। FILENAME এবং FNR এর মতো বিল্ট-ইন ভেরিয়েবল ব্যবহার করে, আপনি একাধিক ফাইল নিয়ে কাজ করার সময় আরও নিয়ন্ত্রণ পেতে পারেন। এই বৈশিষ্ট্যগুলি AWK-কে ডেটা ম্যানিপুলেশনের জন্য একটি শক্তিশালী টুল হিসেবে প্রতিষ্ঠিত করেছে।
Read more