AWK একটি টেক্সট প্রসেসিং ভাষা হিসেবে ডিজাইন করা হয়েছে, যেখানে প্যাটার্ন এবং অ্যাকশন স্টেটমেন্টস একসঙ্গে কাজ করে। একটি AWK স্ক্রিপ্টে সাধারণত একটি প্যাটার্ন এবং একটি অ্যাকশন থাকে, যা ফাইলের প্রতিটি রেকর্ড (লাইন) এর জন্য কার্যকর হয়।
প্যাটার্ন
প্যাটার্ন হল শর্ত যা নির্ধারণ করে কোন লাইনে অ্যাকশনটি কার্যকর হবে। প্যাটার্নগুলি সাধারণত নিয়মিত এক্সপ্রেশন, তুলনা অপারেটর, অথবা নির্দিষ্ট শর্ত হতে পারে। AWK এ প্যাটার্নগুলো হলো:
অপেক্ষাকৃত প্যাটার্ন: সব লাইনকেই শর্ত হিসেবে বিবেচনা করা হয়। উদাহরণ:
awk '{print}' filename.txtএই কমান্ডটি
filename.txtফাইলের সব লাইন প্রিন্ট করবে।নিয়মিত এক্সপ্রেশন প্যাটার্ন: নির্দিষ্ট শব্দ বা প্যাটার্ন খুঁজে বের করতে নিয়মিত এক্সপ্রেশন ব্যবহার করা হয়। উদাহরণ:
awk '/pattern/ {print}' filename.txtএই কমান্ডটি
filename.txtফাইলের মধ্যেpatternশব্দটি পাওয়া লাইনগুলো প্রিন্ট করবে।শর্ত প্যাটার্ন: নির্দিষ্ট শর্ত পূরণ হলে প্যাটার্ন ব্যবহার করা যায়। উদাহরণ:
awk '$1 > 50 {print $1}' filename.txtএই কমান্ডটি প্রথম কলামের মান 50 এর বেশি হলে সেই মানটি প্রিন্ট করবে।
অ্যাকশন
অ্যাকশন হল সেই কার্যক্রম যা প্যাটার্নটি সত্য হলে সম্পন্ন হয়। অ্যাকশন ব্লক সাধারণত {} এর মধ্যে লেখা হয় এবং এখানে বিভিন্ন AWK কমান্ড এবং ফাংশন ব্যবহার করা যেতে পারে। অ্যাকশনের মধ্যে সাধারণত প্রিন্ট করা, মান সংরক্ষণ করা, গণনা করা ইত্যাদি অন্তর্ভুক্ত থাকে।
উদাহরণ
সব লাইন প্রিন্ট করা:
awk '{print $0}' filename.txtএখানে,
$0বর্তমান লাইনের সম্পূর্ণ টেক্সট নির্দেশ করে।নির্দিষ্ট কলাম প্রিন্ট করা:
awk '{print $1, $3}' filename.txtএই কমান্ডটি
filename.txtফাইলের প্রথম এবং তৃতীয় কলাম প্রিন্ট করবে।শর্তযুক্ত অ্যাকশন:
awk '$2 > 100 {print $1, $2}' filename.txtএখানে, দ্বিতীয় কলামের মান 100 এর বেশি হলে প্রথম এবং দ্বিতীয় কলাম প্রিন্ট হবে।
প্যাটার্ন এবং অ্যাকশন একত্রে
AWK এর একটি প্রোগ্রামে প্যাটার্ন এবং অ্যাকশন একত্রে ব্যবহার করা হয়। উদাহরণ:
awk '$1 ~ /^[A]/ {print $0}' filename.txtএই কমান্ডটি filename.txt ফাইলের মধ্যে যেসব লাইন প্রথম কলামে 'A' দিয়ে শুরু হয়, সেগুলোকে প্রিন্ট করবে।
সারসংক্ষেপ
AWK এ প্যাটার্ন এবং অ্যাকশন স্টেটমেন্টস একটি শক্তিশালী উপায়ে কাজ করে, যা ব্যবহারকারীদের নির্দিষ্ট শর্ত অনুযায়ী টেক্সট ডেটা প্রক্রিয়া করতে সহায়তা করে। প্যাটার্নগুলি শর্ত নির্ধারণ করে, এবং অ্যাকশনগুলি সেই শর্ত পূরণ হলে কার্যকর হয়। AWK এর এই কাঠামো ব্যবহার করে ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণ সহজ এবং কার্যকর হয়।
Pattern matching হল একটি প্রক্রিয়া যেখানে একটি নির্দিষ্ট প্যাটার্ন অনুসারে ডেটার মধ্যে অনুসন্ধান এবং নির্বাচন করা হয়। AWK প্রোগ্রামিং ভাষায় এটি একটি গুরুত্বপূর্ণ ফিচার, যা ব্যবহারকারীদের টেক্সট ফাইলের মধ্যে নির্দিষ্ট তথ্য খুঁজে বের করতে এবং প্রক্রিয়া করতে সহায়তা করে। AWK-তে pattern matching সাধারণত নিয়মিত এক্সপ্রেশন (Regular Expressions) ব্যবহার করে সম্পন্ন হয়।
Pattern Matching এর ধারণা
Pattern matching এর মাধ্যমে আপনি ডেটার মধ্যে অনুসন্ধান করতে পারেন, যা একটি নির্দিষ্ট প্যাটার্ন বা শর্ত অনুযায়ী হয়। এটি বিভিন্ন ক্ষেত্রের জন্য প্রযোজ্য, যেমন:
- ডেটা ফিল্টারিং: টেক্সট ফাইল থেকে নির্দিষ্ট তথ্য বের করা।
- ডেটা বিশ্লেষণ: তথ্য বিশ্লেষণের সময় ডেটার মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করা।
- ভুল ডেটা শনাক্তকরণ: ভুল তথ্য চিহ্নিত করতে ব্যবহৃত হয়।
নিয়মিত এক্সপ্রেশন ব্যবহার করে প্যাটার্ন ম্যাচিং করা হয়, যা বিভিন্ন চরিত্র এবং শর্তের সংমিশ্রণে তৈরি হয়। উদাহরণস্বরূপ, [a-z] দ্বারা ছোট হাতের অক্ষরের একটি সিরিজ বোঝায়।
AWK এ Pattern Matching
AWK একটি শক্তিশালী টুল যা pattern matching-এর মাধ্যমে টেক্সট ডেটা প্রক্রিয়া করতে সক্ষম। AWK-তে pattern matching সাধারণত নিম্নলিখিতভাবে করা হয়:
awk '/pattern/ { action }' input_fileএখানে, pattern হল একটি নিয়মিত এক্সপ্রেশন যা ডেটার মধ্যে অনুসন্ধান করা হবে। যদি patternটি মিলে যায়, তাহলে { action } ব্লকটি কার্যকর হয়।
AWK এর মাধ্যমে Pattern Matching এর উদাহরণ:
- প্যাটার্ন অনুসারে লাইনের প্রিন্ট করা:
awk '/error/ { print }' logfile.txtএই কমান্ডটি logfile.txt ফাইল থেকে "error" শব্দটি থাকা সব লাইন প্রিন্ট করবে।
- নির্দিষ্ট কলামে প্যাটার্ন খুঁজে বের করা:
awk '$2 ~ /^[A-Z]/ { print }' data.txtএটি data.txt ফাইলের দ্বিতীয় কলামে এমন লাইনের ডেটা প্রিন্ট করবে, যেখানে দ্বিতীয় কলামের প্রথম অক্ষর একটি বড় হাতের অক্ষর।
- প্যাটার্ন মিলে গেলে সংখ্যা গণনা:
awk '/warning/ { count++ } END { print count }' logfile.txtএই কমান্ডটি logfile.txt ফাইল থেকে "warning" শব্দটি থাকা লাইনের সংখ্যা গণনা করবে এবং ফলস্বরূপ দেখাবে।
AWK এর সুবিধা
- সহজ এবং কার্যকরী: AWK সহজ সিনট্যাক্সের কারণে নতুন ব্যবহারকারীদের জন্য শেখা সহজ।
- ফাস্ট প্রক্রিয়াকরণ: বড় ডেটাসেটের উপর দ্রুত প্রক্রিয়াকরণের ক্ষমতা।
- কাস্টমাইজেশন: ব্যবহারকারীরা তাদের প্রয়োজন অনুসারে কাস্টম ফাংশন তৈরি করতে পারেন।
সারসংক্ষেপ
Pattern matching একটি গুরুত্বপূর্ণ প্রক্রিয়া যা AWK ব্যবহার করে সহজে এবং কার্যকরভাবে করা যায়। AWK নিয়মিত এক্সপ্রেশন এবং সহজ সিনট্যাক্স ব্যবহার করে ডেটা ফিল্টারিং এবং বিশ্লেষণের কাজকে দ্রুততর করে। AWK এর এই ক্ষমতা এবং সুবিধাগুলি এটিকে প্রোগ্রামার এবং সিস্টেম অ্যাডমিনিস্ট্রেটরদের মধ্যে একটি জনপ্রিয় টুল করে তোলে, যা বিভিন্ন ধরনের ডেটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়।
AWK তে BEGIN এবং END ব্লকগুলি বিশেষ ধরনের ব্লক যা প্রোগ্রামের শুরু এবং শেষের সময় কার্যকর হয়। এগুলি ডেটা প্রক্রিয়াকরণের আগে এবং পরে এক্সিকিউশন হয় এবং ব্যবহারকারীকে প্রোগ্রামের অভ্যন্তরে সূচনা এবং সমাপনী কাজ করতে সাহায্য করে।
BEGIN ব্লক
BEGIN ব্লকটি AWK প্রোগ্রামের শুরুর সময় কার্যকর হয়। এটি সাধারণত প্রাথমিক সেটআপের জন্য ব্যবহৃত হয়, যেমন ভেরিয়েবল প্রাথমিককরণ, হেডার মুদ্রণ, বা অন্যান্য শুরু করার কাজ।
উদাহরণ:
awk 'BEGIN {
print "Name\tAge"
print "--------------"
}' data.txtএখানে BEGIN ব্লকটি data.txt ফাইলের তথ্য প্রদর্শনের আগে "Name" এবং "Age" হেডার প্রিন্ট করে।
END ব্লক
END ব্লকটি AWK প্রোগ্রামের শেষের সময় কার্যকর হয়। এটি সাধারণত প্রোগ্রামের শেষের সময় ক্লিনআপ কাজ, যেমন সারসংক্ষেপ তৈরি করা বা ফলাফল প্রিন্ট করার জন্য ব্যবহৃত হয়।
উদাহরণ:
awk '{
sum += $2 # দ্বিতীয় কলামের মানের যোগফল
} END {
print "Total:", sum
}' data.txtএখানে END ব্লকটি সকল রেকর্ড প্রসেস করার পরে "Total:" সহ যোগফলটি প্রিন্ট করে।
BEGIN এবং END ব্লকের সাথে একসাথে ব্যবহার
BEGIN এবং END ব্লকগুলি একসাথে ব্যবহার করা হলে, প্রোগ্রামটি ডেটা প্রসেস করার সময় সূচনা এবং সমাপনী কার্যক্রম সহজে পরিচালনা করতে পারে।
উদাহরণ:
awk 'BEGIN {
print "Name\tAge"
print "--------------"
}
{
print $1, "\t", $2
}
END {
print "--------------"
print "End of Report"
}' data.txtএখানে, BEGIN ব্লকটি হেডার প্রিন্ট করে, প্রধান ব্লকটি ডেটা প্রদর্শন করে এবং END ব্লকটি রিপোর্টের শেষে একটি লাইন এবং "End of Report" বার্তা প্রিন্ট করে।
সারসংক্ষেপ
BEGIN এবং END ব্লকগুলি AWK প্রোগ্রামের কার্যকরী উপাদান। BEGIN ব্লক প্রোগ্রামের শুরুতে কার্যকর হয়, যেখানে প্রাথমিক সেটআপ করা হয়, এবং END ব্লক প্রোগ্রামের শেষে কার্যকর হয়, যেখানে ফলাফল বা সারসংক্ষেপ উপস্থাপন করা হয়। এই ব্লকগুলি ব্যবহার করে ডেটা প্রসেসিংকে আরও সংগঠিত এবং কার্যকরী করা যায়।
AWK একটি শক্তিশালী টেক্সট প্রসেসিং ভাষা যা প্যাটার্ন এবং অ্যাকশন ভিত্তিক ডেটা প্রক্রিয়াকরণের জন্য ডিজাইন করা হয়েছে। এতে ব্যবহারকারী নির্দিষ্ট প্যাটার্ন নির্ধারণ করে এবং সেই প্যাটার্নের ভিত্তিতে একটি অ্যাকশন সম্পাদন করে। এই পদ্ধতি ডেটা বিশ্লেষণের কাজকে সহজ এবং কার্যকরী করে।
প্যাটার্ন
প্যাটার্নগুলি শর্ত নির্দেশ করে যা AWK প্রোগ্রামে প্রয়োগ করা হয়। একটি প্যাটার্ন হল একটি নির্দিষ্ট নিয়ম বা শর্ত যা রেকর্ড বা লাইনে নির্ধারণ করে। AWK এর কিছু সাধারণ প্যাটার্ন হল:
- রেগুলার এক্সপ্রেশন: নির্দিষ্ট শব্দ বা অক্ষরের সিকোয়েন্স খুঁজে বের করার জন্য ব্যবহৃত হয়। যেমন
/pattern/। - রেকর্ড নম্বর: একটি নির্দিষ্ট রেকর্ড নম্বর নির্দেশ করে। যেমন
NR == 5(পঞ্চম রেকর্ড)। - শর্তাবলী: কোন ফিল্ডের মানের ভিত্তিতে শর্ত। যেমন
$1 > 100(প্রথম ফিল্ড 100 এর বেশি)।
অ্যাকশন
অ্যাকশনগুলি হল সেই কার্যক্রম যা AWK প্যাটার্ন ম্যাচ হলে সম্পাদন করে। অ্যাকশনগুলি সাধারণত {} বন্ধনীর মধ্যে থাকে এবং এতে বিভিন্ন অপারেশন অন্তর্ভুক্ত থাকতে পারে, যেমন print, printf, পরিবর্তন, গণনা ইত্যাদি।
সিনট্যাক্স
AWK এর সাধারণ সিনট্যাক্স হলো:
awk 'pattern { action }' filenameউদাহরণ
বেসিক ডেটা প্রক্রিয়াকরণ:
awk '{print $1, $3}' filename.txtএখানে, প্রতিটি লাইনের প্রথম এবং তৃতীয় কলাম প্রিন্ট হবে।
শর্তযুক্ত ডেটা প্রক্রিয়াকরণ:
awk '$2 > 50 {print $1}' filename.txtএখানে, যদি দ্বিতীয় কলামের মান 50 এর বেশি হয়, তবে প্রথম কলাম প্রিন্ট হবে।
রেগুলার এক্সপ্রেশন ব্যবহার:
awk '/error/ {print $0}' logfile.txtএখানে,
logfile.txtফাইলে "error" শব্দযুক্ত সব লাইন প্রিন্ট হবে।গণনা এবং আউটপুট:
awk '{sum += $2} END {print sum}' filename.txtএখানে, দ্বিতীয় কলামের সব মান যোগ করে শেষে মোট যোগফল প্রিন্ট হবে।
মাল্টিপল শর্তাবলী ব্যবহার:
awk '($1 > 100 && $2 < 50) {print $0}' filename.txtএখানে, যদি প্রথম কলাম 100 এর বেশি এবং দ্বিতীয় কলাম 50 এর কম হয়, তবে পুরো রেকর্ড প্রিন্ট হবে।
একত্রিত প্যাটার্ন এবং অ্যাকশন
একাধিক প্যাটার্ন এবং অ্যাকশন একসাথে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ:
awk '$1 ~ /^[A-Z]/ {print $0} $3 < 100 {print $1, $3}' filename.txtএখানে, প্রথম প্যাটার্নটি চেক করে যে প্রথম কলামের মান বড় হাতের অক্ষরে শুরু হচ্ছে কিনা এবং সেই ক্ষেত্রে পুরো লাইন প্রিন্ট করে। দ্বিতীয় প্যাটার্নটি তৃতীয় কলামের মান 100 এর কম হলে প্রথম এবং তৃতীয় কলাম প্রিন্ট করে।
সারসংক্ষেপ
AWK এর প্যাটার্ন এবং অ্যাকশন ভিত্তিক ডেটা প্রক্রিয়াকরণ একটি শক্তিশালী টুল যা ব্যবহারকারীদের বিভিন্ন শর্ত অনুযায়ী ডেটা বিশ্লেষণ করতে সহায়তা করে। এটি ডেটা ফাইল থেকে তথ্য বের করতে, প্রক্রিয়া করতে এবং ফলাফল উপস্থাপন করতে খুবই কার্যকর। AWK এর এই বৈশিষ্ট্যগুলি ব্যবহার করে, আপনি জটিল ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণ কাজকে দ্রুত এবং সহজে সম্পন্ন করতে পারেন।
AWK একটি শক্তিশালী টেক্সট প্রসেসিং ভাষা, যেখানে Default Actions একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। AWK তে, যখন একটি শর্ত পূর্ণ হয়, তখন একটি সংশ্লিষ্ট কার্যকলাপ নির্ধারণ না করা হলে, AWK কিছু ডিফল্ট কার্যকলাপ সম্পাদন করে। ডিফল্ট অ্যাকশনের মাধ্যমে, ব্যবহারকারীরা সহজে টেক্সট বা ডেটা প্রক্রিয়া করতে পারেন।
Default Actions এর মূল ধারণা
AWK তে, যখন একটি শর্ত সত্য হয়, তখন প্রাথমিকভাবে AWK ডিফল্ট কার্যকলাপ হিসেবে সম্পূর্ণ লাইনের আউটপুট প্রদান করে। অর্থাৎ, যদি কোনও অ্যাকশন ব্লক উল্লেখ না করা হয়, তবে AWK স্বয়ংক্রিয়ভাবে print $0 (যেখানে $0 হল সম্পূর্ণ বর্তমান রেকর্ড) কার্যকর করে।
উদাহরণ
1. একটি সাধারণ AWK স্ক্রিপ্ট
awk '$1 == "Alice"' filename.txtএখানে, $1 == "Alice" শর্তটি যদি সত্য হয়, তাহলে AWK ডিফল্টভাবে সম্পূর্ণ লাইনের আউটপুট দেবে, কারণ কোনও অ্যাকশন নির্ধারণ করা হয়নি।
2. কিছু শর্তের সাথে ডিফল্ট অ্যাকশন
awk '$3 > 50' data.txtএখানে, যদি তৃতীয় কলামের মান 50 এর বেশি হয়, তবে সেই লাইনের সবকিছু ডিফল্টভাবে আউটপুট হবে। এই ক্ষেত্রে, ব্যবহারকারী কোনও অ্যাকশন উল্লেখ করেনি।
3. একসাথে ডিফল্ট অ্যাকশন এবং নির্দিষ্ট অ্যাকশন
awk '$1 == "Bob" {print $2} {print}' filename.txtএখানে, $1 == "Bob" শর্তটি সত্য হলে $2 প্রিন্ট করবে, এবং অন্যান্য সমস্ত লাইনের জন্য ডিফল্টভাবে প্রিন্ট করবে।
Default Actions এর সুবিধা
- সহজতা: ডিফল্ট অ্যাকশনের মাধ্যমে ব্যবহারকারী সহজেই সমস্ত রেকর্ড বা লাইনের আউটপুট পেতে পারেন, যা কোড লেখার সময় সুবিধা দেয়।
- কমান্ড লাইন সংক্ষিপ্তকরণ: ব্যবহারকারী ছোট এবং সহজ কোড লিখে দ্রুত ফলাফল পেতে পারেন।
- পরীক্ষণ এবং ডিবাগিং: ডিফল্ট অ্যাকশন ব্যবহার করে, ব্যবহারকারী দ্রুত দেখতে পারে কোন রেকর্ডগুলি শর্ত পূরণ করছে।
সারসংক্ষেপ
AWK তে Default Actions একটি কার্যকর বৈশিষ্ট্য যা ব্যবহারকারীদের শর্তের ভিত্তিতে ডেটার প্রক্রিয়াকরণের সময় দ্রুত এবং সহজ ফলাফল পেতে সহায়তা করে। যখন ব্যবহারকারী কোনও নির্দিষ্ট অ্যাকশন উল্লেখ না করেন, তখন AWK স্বয়ংক্রিয়ভাবে সম্পূর্ণ লাইনের আউটপুট প্রদান করে। এটি কোড লেখার সময় ব্যবহারকারীদের জন্য সহজতা এবং কার্যকারিতা বৃদ্ধি করে। Default Actions এর সঠিক ব্যবহার AWK স্ক্রিপ্টের কার্যকারিতা বাড়ায় এবং ডেটা বিশ্লেষণের কাজকে আরও কার্যকর করে।
Read more