AWK এ আউটপুট ফরম্যাটিং (Output Formatting in AWK)
AWK এর একটি অন্যতম শক্তিশালী দিক হল এর আউটপুট ফরম্যাটিং ক্ষমতা। AWK ব্যবহার করে আপনি ডেটা প্রিন্ট করার সময় বিভিন্ন ফরম্যাটিং নিয়ম প্রয়োগ করতে পারেন। এটি আউটপুটকে আরও পঠনযোগ্য ও উপস্থাপনযোগ্য করে তোলে।
আউটপুট ফরম্যাটিং এর মৌলিক ধারণা
AWK এ সাধারণত আউটপুট ফরম্যাটিং করতে print এবং printf ব্যবহার করা হয়। print ফাংশন সহজ এবং দ্রুত, যেখানে printf আরও নিয়ন্ত্রিত এবং ফরম্যাটেড আউটপুট তৈরি করতে ব্যবহৃত হয়।
print ফাংশন
print ফাংশন AWK এ সহজ এবং সাধারণ আউটপুট প্রিন্ট করার জন্য ব্যবহৃত হয়। এটি ভিন্ন ভিন্ন ফিল্ড এবং স্ট্রিং একত্রিত করে প্রিন্ট করতে পারে।
উদাহরণ:
awk '{print $1, $2}' filename.txtএই কমান্ডটি প্রতিটি লাইনের প্রথম এবং দ্বিতীয় ফিল্ড স্পেস দিয়ে আলাদা করে প্রিন্ট করবে।
printf ফাংশন
printf ফাংশন আরও উন্নত আউটপুট ফরম্যাটিং প্রদান করে। এটি C প্রোগ্রামিং ভাষার printf ফাংশনের মতোই কাজ করে এবং বিভিন্ন ফরম্যাট স্পেসিফায়ার ব্যবহার করতে পারে।
ফরম্যাট স্পেসিফায়ার
- %d: পূর্ণসংখ্যা প্রিন্ট করতে।
- %f: দশমিক সংখ্যা প্রিন্ট করতে।
- %s: স্ট্রিং প্রিন্ট করতে।
- %x: হেক্সাডেসিমাল ফরম্যাটে প্রিন্ট করতে।
উদাহরণ:
awk '{printf "Name: %s, Age: %d\n", $1, $2}' filename.txtএই কমান্ডটি প্রতিটি লাইনের প্রথম ফিল্ডকে নাম এবং দ্বিতীয় ফিল্ডকে বয়স হিসেবে ফরম্যাট করে প্রিন্ট করবে।
আউটপুট ফিল্ড এবং রেকর্ড সেপারেটর
AWK এ আউটপুটের ফিল্ড এবং রেকর্ড সেপারেটর নির্ধারণ করতে OFS (Output Field Separator) এবং ORS (Output Record Separator) ভেরিয়েবল ব্যবহার করা হয়।
উদাহরণ:
awk 'BEGIN {OFS = ", "} {print $1, $2, $3}' filename.txtএটি প্রতিটি ফিল্ডের মধ্যে কমা এবং স্পেস দিয়ে আউটপুট প্রিন্ট করবে।
নির্দিষ্ট চওড়া আউটপুট ফরম্যাটিং
AWK এ ফরম্যাটেড আউটপুট তৈরিতে নির্দিষ্ট চওড়ার ফরম্যাট ব্যবহার করা যায়। আপনি প্রতিটি ফিল্ডকে নির্দিষ্ট চওড়ার স্পেস বরাদ্দ করতে পারেন।
উদাহরণ:
awk '{printf "%-10s %-5d\n", $1, $2}' filename.txtএটি প্রথম ফিল্ডকে ১০ ক্যারেক্টারের এবং দ্বিতীয় ফিল্ডকে ৫ ক্যারেক্টারের চওড়া করে প্রিন্ট করবে। %- ফ্ল্যাগটি বামপাশে সমন্বয় করে।
আউটপুটের সংখ্যা ফরম্যাটিং
সংখ্যার আউটপুট ফরম্যাটিং printf ফাংশনের মাধ্যমে নিয়ন্ত্রিত হতে পারে।
উদাহরণ:
awk '{printf "Value: %.2f\n", $3}' filename.txtএটি তৃতীয় ফিল্ডের সংখ্যা দুই দশমিক পর্যন্ত ফরম্যাট করে প্রিন্ট করবে।
ফাইল আউটপুটে লেখা
AWK এর মাধ্যমে আউটপুট সরাসরি একটি ফাইলে লেখা যায়।
উদাহরণ:
awk '{print $1, $2 > "output.txt"}' filename.txtএটি filename.txt ফাইলের প্রথম এবং দ্বিতীয় ফিল্ড output.txt ফাইলে লিখবে।
সারসংক্ষেপ
AWK এ আউটপুট ফরম্যাটিং একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা ডেটাকে আরও পঠনযোগ্য এবং প্রেজেন্টেবল করে। print এবং printf ফাংশনের মাধ্যমে বিভিন্ন ফরম্যাটিং নিয়ম প্রয়োগ করা যায়। এছাড়াও, OFS এবং ORS ভেরিয়েবল ব্যবহার করে আউটপুটের ফিল্ড এবং রেকর্ড সেপারেটর নির্ধারণ করা সম্ভব। AWK এর এই ফরম্যাটিং ক্ষমতা ডেটা বিশ্লেষণ ও রিপোর্ট তৈরিতে কার্যকর ভূমিকা পালন করে।
printf এবং তার ব্যবহার
printf হল একটি ফাংশন যা স্ট্রিং এবং ডেটা আউটপুট করার জন্য ব্যবহার করা হয়। এটি বিভিন্ন প্রোগ্রামিং ভাষায় পাওয়া যায় এবং স্ট্রিং আউটপুটকে নির্দিষ্ট ফরম্যাটে প্রদর্শন করতে ব্যবহার করা হয়। AWK এবং অন্যান্য প্রোগ্রামিং ভাষায় printf ফাংশন ব্যবহার করে বিভিন্ন ধরনের আউটপুট ফরম্যাটিং করা সম্ভব। printf সাধারণ print স্টেটমেন্টের তুলনায় বেশি নিয়ন্ত্রণ প্রদান করে।
printf এর মূল কাঠামো
printf ফাংশনের সাধারণ কাঠামো নিম্নরূপ:
printf "format", variable1, variable2, ...এখানে:
- "format": আউটপুটের ফরম্যাট নির্ধারণ করে। এটি স্পেসিফায়ার, যেমন
%d,%s,%fইত্যাদি ব্যবহার করে বিভিন্ন ধরনের ডেটা ফরম্যাট করে। - variable1, variable2, ...: ফরম্যাট স্ট্রিংয়ে ব্যবহৃত ভেরিয়েবলগুলির মান।
printf এর ফরম্যাট স্পেসিফায়ার
%s: স্ট্রিং আউটপুটের জন্য।%d: পূর্ণসংখ্যা আউটপুটের জন্য।%f: ভগ্নাংশ সংখ্যা আউটপুটের জন্য।%.nf: ভগ্নাংশ সংখ্যার n সংখ্যা পর্যন্ত দশমিক প্রদর্শন করার জন্য।%x: হেক্সাডেসিমাল সংখ্যা আউটপুটের জন্য।
printf এর উদাহরণ
- সাধারণ printf ব্যবহার:
awk 'BEGIN {
name = "Alice";
age = 25;
printf "Name: %s, Age: %d\n", name, age;
}'ফলস্বরূপ:
Name: Alice, Age: 25- ভগ্নাংশ সংখ্যা ফরম্যাটিং:
awk 'BEGIN {
pi = 3.14159265359;
printf "Pi to 2 decimal places: %.2f\n", pi;
}'ফলস্বরূপ:
Pi to 2 decimal places: 3.14- সংখ্যার অবস্থান নির্ধারণ:
awk 'BEGIN {
num1 = 123;
num2 = 4567;
printf "%10d\n%10d\n", num1, num2;
}'ফলস্বরূপ:
123
4567এখানে, প্রতিটি সংখ্যা 10 ক্যারেক্টারের মধ্যে ডানদিকে সজ্জিত করা হয়েছে।
- স্ট্রিং সজ্জা:
awk 'BEGIN {
text = "Hello";
printf "|%-10s|\n", text;
}'ফলস্বরূপ:
|Hello |এখানে, %-10s ব্যবহার করে স্ট্রিংটি বাম দিকে সজ্জিত করা হয়েছে এবং 10 ক্যারেক্টারের স্পেস রাখা হয়েছে।
printf বনাম print
print: সহজ আউটপুটের জন্য ব্যবহৃত হয় এবং নতুন লাইন দিয়ে প্রতিটি আউটপুট শেষ হয়।printf: ফরম্যাটেড আউটপুটের জন্য ব্যবহৃত হয় এবং ব্যবহারকারীকে নতুন লাইনের জন্য\nস্পষ্টভাবে যোগ করতে হয়।
উদাহরণ:
awk 'BEGIN {
print "Hello, World!";
printf "Hello, World!\n";
}'উপরের উদাহরণে print স্বয়ংক্রিয়ভাবে নতুন লাইন যুক্ত করে, কিন্তু printf-এ ব্যবহারকারীকে নতুন লাইনের জন্য \n যোগ করতে হয়েছে।
সারসংক্ষেপ
printf ফাংশন স্ট্রিং এবং ডেটা আউটপুটের জন্য একটি অত্যন্ত শক্তিশালী টুল, যা ব্যবহারকারীদের আউটপুট ফরম্যাট করার জন্য বেশি নিয়ন্ত্রণ দেয়। এটি ফরম্যাট স্পেসিফায়ার ব্যবহার করে আউটপুটকে সাজানো এবং নির্দিষ্ট ফরম্যাটে প্রদর্শন করার সুযোগ প্রদান করে। printf এর সাহায্যে প্রোগ্রামাররা পেশাদারী এবং নিয়ন্ত্রিত আউটপুট তৈরি করতে পারেন।
Output Field Separator (OFS) এবং Output Record Separator (ORS)
AWK তে Output Field Separator (OFS) এবং Output Record Separator (ORS) হল দুটি গুরুত্বপূর্ণ ভেরিয়েবল যা আউটপুট ফরম্যাটিং নিয়ন্ত্রণ করতে ব্যবহৃত হয়। OFS আউটপুটে প্রতিটি ফিল্ডের মধ্যে আলাদা করার জন্য ব্যবহৃত হয়, আর ORS আউটপুটে প্রতিটি রেকর্ডের পরে কী বসানো হবে তা নির্দেশ করে।
Output Field Separator (OFS)
OFS ব্যবহার করা হয় আউটপুটে বিভিন্ন ফিল্ডের মধ্যে কী বসানো হবে তা নির্ধারণ করতে। ডিফল্টভাবে, AWK তে OFS একটি স্পেস হিসেবে সেট করা থাকে, তবে এটি কাস্টমাইজ করা যেতে পারে।
OFS এর ব্যবহার:
awk 'BEGIN { OFS = ", " }
{
print $1, $2, $3
}' data.txtএখানে, আউটপুটে প্রতিটি ফিল্ডের মধ্যে একটি কমা এবং স্পেস যোগ করা হবে। উদাহরণস্বরূপ, $1, $2, এবং $3 কলামগুলো আউটপুটে কমা দিয়ে আলাদা হয়ে প্রিন্ট হবে।
Output Record Separator (ORS)
ORS ব্যবহার করা হয় আউটপুটে প্রতিটি রেকর্ডের শেষে কী বসানো হবে তা নির্দেশ করতে। ডিফল্টভাবে, AWK তে ORS একটি নিউলাইন হিসেবে সেট করা থাকে।
ORS এর ব্যবহার:
awk 'BEGIN { ORS = "\n\n" }
{
print $0
}' data.txtএখানে, প্রতিটি রেকর্ডের পরে দুটি নিউলাইন যোগ করা হবে, ফলে আউটপুটে প্রতিটি রেকর্ডের মধ্যে একটি ফাঁকা লাইন থাকবে।
উদাহরণ: OFS এবং ORS একসাথে ব্যবহার
awk 'BEGIN { OFS = " | "; ORS = "\n---\n" }
{
print $1, $2, $3
}' data.txtএখানে, প্রতিটি ফিল্ডের মধ্যে একটি পাইপ (|) সেপারেটর যোগ করা হয়েছে এবং প্রতিটি রেকর্ডের পরে \n---\n আউটপুটে যুক্ত করা হয়েছে। এর ফলে আউটপুটটি হবে:
Field1 | Field2 | Field3
---
Field1 | Field2 | Field3
---বাস্তব ব্যবহার
OFS এবং ORS ব্যবহার করে আউটপুটকে সহজে পঠনযোগ্য ও কাস্টমাইজ করা যায়। উদাহরণস্বরূপ, CSV ফাইল তৈরি করতে OFS কে কমা হিসেবে ব্যবহার করা যেতে পারে, অথবা রেকর্ডের মধ্যে অতিরিক্ত স্পেস যোগ করতে ORS ব্যবহার করা যেতে পারে।
সারসংক্ষেপ
Output Field Separator (OFS) এবং Output Record Separator (ORS) AWK তে আউটপুট ফরম্যাটিং নিয়ন্ত্রণ করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। OFS প্রতিটি ফিল্ডের মধ্যে সেপারেটর যোগ করতে ব্যবহৃত হয়, আর ORS প্রতিটি রেকর্ডের পরে কী যোগ হবে তা নির্ধারণ করে। এই ভেরিয়েবলগুলি ব্যবহারকারীদের আউটপুটকে আরও নিয়ন্ত্রিত ও কাঙ্ক্ষিত ফরম্যাটে উপস্থাপন করতে সাহায্য করে।
AWK এ Text Alignment এবং Formatting
AWK প্রোগ্রামিং ভাষায় টেক্সট প্রিন্ট করার সময় বিভিন্ন ধরনের ফরম্যাটিং এবং অ্যালাইনমেন্ট করা সম্ভব। এটি বিশেষত রিপোর্ট জেনারেশন বা ডেটা আউটপুট করার সময় উপযোগী। AWK এ printf ফাংশন ব্যবহার করে ফরম্যাট করা আউটপুট তৈরি করা যায়, যা C প্রোগ্রামিং ভাষার printf ফাংশনের মতো কাজ করে।
১. printf ফাংশন ব্যবহার
printf ফাংশন ব্যবহার করে টেক্সট ফরম্যাট করা যায়। এটি আউটপুটের ফরম্যাট নির্ধারণ করার জন্য বিভিন্ন ফরম্যাট স্পেসিফায়ার ব্যবহার করে।
সাধারণ ফরম্যাট স্পেসিফায়ার:
%s: স্ট্রিং ফরম্যাট%d: ইন্টিজার ফরম্যাট%f: ফ্লোট ফরম্যাট%c: একক অক্ষর ফরম্যাট
২. টেক্সট অ্যালাইনমেন্ট
printf ফাংশনের ফরম্যাট স্পেসিফায়ার ব্যবহার করে টেক্সট ডান, বাম, বা কেন্দ্রীয়ভাবে সাজানো যায়।
উদাহরণ: ডান অ্যালাইনমেন্ট
awk '{printf "%10s %10s\n", $1, $2}' filename.txtএখানে, %10s স্পেসিফায়ারটি ১০ স্পেসের মধ্যে ডানদিকে অ্যালাইন করে ফিল্ড প্রিন্ট করবে।
উদাহরণ: বাম অ্যালাইনমেন্ট
awk '{printf "%-10s %-10s\n", $1, $2}' filename.txtএখানে, %-10s স্পেসিফায়ারটি ১০ স্পেসের মধ্যে বামদিকে অ্যালাইন করে ফিল্ড প্রিন্ট করবে।
৩. নির্দিষ্ট প্রস্থ এবং সংখ্যা সঠিকতা
ফরম্যাট স্পেসিফায়ার ব্যবহার করে ফিল্ডের প্রস্থ এবং দশমিক সংখ্যা সঠিকতা নির্ধারণ করা যায়।
উদাহরণ: নির্দিষ্ট দশমিক সংখ্যার সঠিকতা
awk '{printf "%-10s %.2f\n", $1, $3}' filename.txtএখানে, $3 ফিল্ডটি দশমিকের পর দুটি সংখ্যা সহ ফরম্যাট করা হবে।
৪. টেবিল ফরম্যাটে আউটপুট
AWK এর মাধ্যমে সজ্জিত টেবিল আউটপুট তৈরি করা সম্ভব, যা একটি সহজ এবং পরিষ্কার ফরম্যাটে ডেটা উপস্থাপন করতে সাহায্য করে।
উদাহরণ: টেবিল আউটপুট তৈরি করা
awk 'BEGIN {printf "%-15s %-15s %-10s\n", "Name", "Department", "Salary"}
{
printf "%-15s %-15s $%9.2f\n", $1, $2, $3
}' filename.txtএখানে, Name, Department, এবং Salary শিরোনামগুলি ১৫ স্পেস প্রস্থে বাম অ্যালাইন করা হয়েছে এবং Salary ৯ স্পেস প্রস্থে ডান অ্যালাইন করা হয়েছে ও দশমিকের পরে দুটি সংখ্যা প্রদর্শন করা হয়েছে।
৫. টেক্সটের মধ্যে স্পেস যোগ করা
AWK এ printf ফাংশনের মাধ্যমে টেক্সটের মধ্যে নির্দিষ্ট স্পেস যোগ করা যায়।
উদাহরণ: স্পেস যোগ করে ফরম্যাট করা
awk '{printf "%s %s\n", $1, $2}' filename.txtএখানে, প্রথম এবং দ্বিতীয় ফিল্ডের মধ্যে চারটি স্পেস যোগ করে প্রিন্ট করা হবে।
সারসংক্ষেপ
AWK এ printf ফাংশনের মাধ্যমে টেক্সট অ্যালাইনমেন্ট এবং ফরম্যাটিং করা অত্যন্ত কার্যকর। এটি ব্যবহার করে ডেটা উপস্থাপনকে আরও সুন্দর ও পরিষ্কার করা যায়। AWK এর এই ক্ষমতা বিশেষত রিপোর্ট জেনারেশন, ডেটা বিশ্লেষণ, এবং প্রফেশনাল আউটপুট ফরম্যাট তৈরিতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
AWK এ Custom Output Generation এর উদাহরণ
AWK ব্যবহার করে কাস্টম আউটপুট জেনারেশন খুবই সহজ এবং কার্যকর। বিভিন্ন কলাম থেকে ডেটা সংগ্রহ করে, ফরম্যাট করে, এবং আপনার প্রয়োজন অনুযায়ী আউটপুট তৈরি করা যায়। AWK এর বিল্ট-ইন ফাংশন print এবং printf ব্যবহার করে আউটপুটকে কাস্টমাইজ করা যায়।
উদাহরণসমূহ
উদাহরণ ১: কাস্টম ফরম্যাটে আউটপুট প্রিন্ট করা
ধরা যাক, আপনার কাছে একটি ফাইল students.txt আছে, যেখানে প্রতিটি লাইনে ছাত্রের নাম এবং নম্বর আছে:
John 85
Emily 92
Mark 76
Sophia 89আমরা চাই আউটপুটে নাম এবং নম্বর কাস্টম ফরম্যাটে প্রিন্ট করতে, যেখানে প্রতিটি লাইনের ফরম্যাট হবে: Name: John, Score: 85
awk '{print "Name: " $1 ", Score: " $2}' students.txtফলাফল:
Name: John, Score: 85
Name: Emily, Score: 92
Name: Mark, Score: 76
Name: Sophia, Score: 89উদাহরণ ২: printf ব্যবহার করে ফরম্যাটেড আউটপুট
AWK এর printf ফাংশন ব্যবহার করে আরও নিখুঁতভাবে আউটপুট ফরম্যাট করা যায়। এটি C প্রোগ্রামিং ভাষার মতোই কাজ করে।
awk '{printf "Student: %-10s | Score: %3d\n", $1, $2}' students.txtফলাফল:
Student: John | Score: 85
Student: Emily | Score: 92
Student: Mark | Score: 76
Student: Sophia | Score: 89এখানে %-10s প্রথম কলামটি বামদিকে ১০ চরিত্রের জন্য ফরম্যাট করে, এবং %3d দ্বিতীয় কলামটিকে ৩ সংখ্যার জন্য ফরম্যাট করে। \n নতুন লাইনে চলে যাওয়ার নির্দেশ দেয়।
উদাহরণ ৩: শিরোনামসহ আউটপুট
AWK ব্যবহার করে আপনি আউটপুটের শুরুতে একটি শিরোনাম যোগ করতে পারেন।
awk 'BEGIN {print "Name | Score"} {printf "%-10s | %3d\n", $1, $2}' students.txtফলাফল:
Name | Score
John | 85
Emily | 92
Mark | 76
Sophia | 89BEGIN ব্লকটি স্ক্রিপ্টের শুরুতে একবারই কার্যকর হয় এবং শিরোনাম প্রিন্ট করতে ব্যবহার করা হয়েছে।
উদাহরণ ৪: নির্দিষ্ট শর্তে কাস্টম আউটপুট জেনারেট করা
ধরা যাক, আমরা শুধু সেই ছাত্রদের প্রিন্ট করতে চাই যাদের নম্বর ৮০ এর বেশি:
awk '$2 > 80 {print "Congratulations, " $1 "! You scored: " $2}' students.txtফলাফল:
Congratulations, Emily! You scored: 92
Congratulations, Sophia! You scored: 89এখানে $2 > 80 শর্ত অনুযায়ী আউটপুট ফিল্টার করা হয়েছে।
উদাহরণ ৫: আউটপুট ফাইল তৈরি করা
AWK ব্যবহার করে আউটপুটকে একটি নতুন ফাইলে সংরক্ষণ করা যায়:
awk '{print $1, $2 > "output.txt"}' students.txtএটি output.txt ফাইলে প্রতিটি লাইনের প্রথম এবং দ্বিতীয় কলাম প্রিন্ট করে সংরক্ষণ করবে।
সারসংক্ষেপ
AWK ব্যবহার করে কাস্টম আউটপুট জেনারেশন খুবই সহজ। print এবং printf ব্যবহার করে আউটপুটের ফরম্যাট এবং স্টাইল কাস্টমাইজ করা যায়। এছাড়াও, BEGIN এবং END ব্লক ব্যবহার করে আউটপুটের শুরুতে এবং শেষে শিরোনাম বা উপসংহার যোগ করা যায়। AWK এর এই ক্ষমতা ব্যবহার করে আপনি আপনার ডেটা বিশ্লেষণ এবং আউটপুট জেনারেশন কাজকে আরও দ্রুত এবং কার্যকরভাবে সম্পন্ন করতে পারেন।
Read more