AWK এর সবচেয়ে শক্তিশালী বৈশিষ্ট্যগুলির একটি হল এর নিয়মিত এক্সপ্রেশন (Regular Expressions) সমর্থন। নিয়মিত এক্সপ্রেশনগুলি ব্যবহার করে ব্যবহারকারীরা বিভিন্ন প্যাটার্ন ম্যাচিং এবং টেক্সট প্রসেসিং করতে পারেন। এটি টেক্সট ফাইল থেকে নির্দিষ্ট ডেটা বের করতে এবং ফিল্টার করতে সহায়ক।
নিয়মিত এক্সপ্রেশন হল বিশেষ ধরনের স্ট্রিং যা একটি প্যাটার্নকে প্রতিনিধিত্ব করে। AWK এ নিয়মিত এক্সপ্রেশন ব্যবহার করে আপনি টেক্সট থেকে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে পারেন।
awk '/pattern/ {print}' filename.txt
এটি filename.txt
ফাইলের প্রতিটি লাইন থেকে pattern
শব্দটি পাওয়া লাইনগুলো প্রিন্ট করবে।
AWK এ নিয়মিত এক্সপ্রেশন ব্যবহার করার কিছু সাধারণ উদাহরণ নিচে দেওয়া হল:
নির্দিষ্ট শব্দ খুঁজে বের করা:
awk '/word/ {print}' filename.txt
এটি filename.txt
ফাইলের প্রতিটি লাইন থেকে word
শব্দটি থাকা লাইনগুলো প্রিন্ট করবে।
লাইনের শুরুতে প্যাটার্ন খোঁজা:
awk '/^start/ {print}' filename.txt
এটি filename.txt
ফাইলের মধ্যে start
শব্দ দিয়ে শুরু হওয়া লাইনগুলো প্রিন্ট করবে।
লাইনের শেষে প্যাটার্ন খোঁজা:
awk '/end$/ {print}' filename.txt
এটি filename.txt
ফাইলের মধ্যে end
শব্দ দিয়ে শেষ হওয়া লাইনগুলো প্রিন্ট করবে।
যেকোনো ক্যারেক্টার ম্যাচ করা:
awk '/c.t/ {print}' filename.txt
এটি filename.txt
ফাইলের মধ্যে c
এবং t
এর মাঝে যেকোনো একটি ক্যারেক্টার থাকা লাইনগুলো প্রিন্ট করবে (যেমন cat
, cut
, ইত্যাদি)।
এক বা একাধিকবার:
awk '/go+d/ {print}' filename.txt
এটি filename.txt
ফাইলের মধ্যে g
এর পরে এক বা একাধিক o
এবং শেষে d
থাকা লাইনগুলো প্রিন্ট করবে (যেমন god
, good
, ইত্যাদি)।
শূন্য বা একবার:
awk '/colou?r/ {print}' filename.txt
এটি filename.txt
ফাইলের মধ্যে color
বা colour
শব্দ থাকা লাইনগুলো প্রিন্ট করবে।
বিকল্প প্যাটার্ন খোঁজা:
awk '/cat|dog/ {print}' filename.txt
এটি filename.txt
ফাইলের মধ্যে cat
বা dog
শব্দ থাকা লাইনগুলো প্রিন্ট করবে।
AWK এ কিছু বিশেষ মডিফায়ার রয়েছে যা নিয়মিত এক্সপ্রেশনের সাথে ব্যবহার করা যায়:
^
: লাইনের শুরু নির্দেশ করতে।$
: লাইনের শেষ নির্দেশ করতে।.
: যেকোনো একক ক্যারেক্টার নির্দেশ করতে।*
: পূর্ববর্তী ক্যারেক্টারকে শূন্য বা একাধিকবার নির্দেশ করতে।+
: পূর্ববর্তী ক্যারেক্টারকে এক বা একাধিকবার নির্দেশ করতে।?
: পূর্ববর্তী ক্যারেক্টারকে শূন্য বা একবার নির্দেশ করতে।|
: বিকল্প নির্দেশ করতে।AWK এ নিয়মিত এক্সপ্রেশন ব্যবহার করে টেক্সট ফাইল থেকে নির্দিষ্ট প্যাটার্ন খুঁজে বের করা এবং টেক্সট বিশ্লেষণ করা সহজ হয়। নিয়মিত এক্সপ্রেশনগুলির মাধ্যমে ব্যবহারকারীরা জটিল প্যাটার্ন বিশ্লেষণ এবং ডেটা ফিল্টারিং করতে পারেন। এটি ডেটা প্রসেসিংকে আরও দ্রুত এবং কার্যকর করে তোলে, বিশেষ করে বড় ফাইল এবং ডেটাসেটের ক্ষেত্রে।
Regular Expression (রেগুলার এক্সপ্রেশন), সংক্ষেপে RegEx বা regexp, একটি প্যাটার্ন বা নিদর্শন, যা সাধারণত টেক্সট ডেটায় নির্দিষ্ট ধরণের তথ্য খুঁজে বের করতে ব্যবহৃত হয়। এটি একটি শক্তিশালী টুল যা বিভিন্ন প্রোগ্রামিং ভাষায় পাওয়া যায় এবং ডেটা ফিল্টারিং, প্রক্রিয়াকরণ, এবং বিশ্লেষণে ব্যবহৃত হয়।
a
, b
, 1
, 2
ইত্যাদি। এগুলি সরাসরি মেলে।.
, *
, +
, ?
, ^
, $
, [ ]
, ( )
, { }
, |
ইত্যাদি। এগুলি নির্দিষ্ট প্যাটার্ন অনুসারে মেলানোর জন্য ব্যবহার করা হয়।.
(ডট): যে কোনো একক অক্ষর নির্দেশ করে।h.t
"hat", "hot", "hit" এর সাথে মিলে যায়।^
(ক্যারেট): কোনো লাইনের শুরু নির্দেশ করে।^Hello
শুধুমাত্র সেই লাইনের সাথে মিলে যাবে যা "Hello" দিয়ে শুরু হয়।$
(ডলার): কোনো লাইনের শেষ নির্দেশ করে।end$
শুধুমাত্র সেই লাইনের সাথে মিলে যাবে যা "end" দিয়ে শেষ হয়।*
(স্টার): শূন্য বা একাধিকবার পূর্ববর্তী চরিত্র বা গ্রুপের পুনরাবৃত্তি নির্দেশ করে।ab*
"a", "ab", "abb" ইত্যাদির সাথে মিলে যাবে।+
(প্লাস): অন্তত একবার পূর্ববর্তী চরিত্র বা গ্রুপের পুনরাবৃত্তি নির্দেশ করে।ab+
"ab", "abb", "abbb" ইত্যাদির সাথে মিলে যাবে, কিন্তু "a" এর সাথে নয়।?
(কোশ্চেন): পূর্ববর্তী চরিত্র বা গ্রুপ শূন্য বা একবার মেলে।colou?r
"color" এবং "colour" উভয়ের সাথে মিলে যাবে।[ ]
(সেট): সেটের মধ্যে থাকা যে কোনো একক চরিত্র মেলে।[aeiou]
যেকোনো vowel এর সাথে মিলে যাবে।|
(অর): বিকল্প নির্দেশ করে।cat|dog
"cat" অথবা "dog" এর সাথে মিলে যাবে।সাধারণ প্যাটার্ন ম্যাচিং:
awk '/^Error/' logfile.txt
এই AWK কমান্ডটি logfile.txt
ফাইলের শুধুমাত্র সেই লাইনগুলো প্রিন্ট করবে যা "Error" দিয়ে শুরু হয়েছে।
নির্দিষ্ট ফিল্ডে প্যাটার্ন অনুসন্ধান:
এই AWK কমান্ডটি data.txt
ফাইলের দ্বিতীয় ফিল্ডে বড় হাতের অক্ষর দিয়ে শুরু হওয়া লাইনের পুরো লাইন প্রিন্ট করবে।
[0-9]
: যেকোনো সংখ্যা (0 থেকে 9)।[a-z]
: ছোট হাতের যেকোনো অক্ষর (a থেকে z)।[A-Z]
: বড় হাতের যেকোনো অক্ষর (A থেকে Z)।\d
: যেকোনো সংখ্যা (0-9), যা কিছু ভাষায় \d
দ্বারা নির্দেশ করা হয়।\w
: যেকোনো অক্ষর বা সংখ্যা।\s
: যেকোনো স্পেস চিহ্ন।Regular Expression (RegEx) হল একটি শক্তিশালী টুল যা টেক্সট প্রক্রিয়াকরণ, তথ্য অনুসন্ধান এবং বিশ্লেষণে ব্যবহৃত হয়। এটি বিশেষ চরিত্র এবং প্যাটার্ন ব্যবহার করে ডেটার মধ্যে নির্দিষ্ট অংশ অনুসন্ধান ও পরিবর্তন করতে সাহায্য করে। RegEx এর সাহায্যে প্রোগ্রামাররা সহজেই বড় ডেটাসেট প্রক্রিয়া এবং ফিল্টার করতে পারেন, যা প্রোগ্রামিং এবং ডেটা ম্যানিপুলেশনের ক্ষেত্রে অত্যন্ত কার্যকর।
AWK একটি শক্তিশালী টুল যা টেক্সট প্রক্রিয়াকরণ এবং বিশ্লেষণের ক্ষেত্রে বিশেষভাবে কার্যকর। AWK এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল Regular Expressions (RegEx) ব্যবহার করে টেক্সট ম্যাচিং করা। RegEx ব্যবহার করে জটিল টেক্সট প্যাটার্নগুলি সহজেই খুঁজে বের করা যায় এবং তাদের ভিত্তিতে বিভিন্ন কার্যক্রম সম্পাদন করা যায়।
AWK এর Regular Expressions সাধারণত /pattern/
আকারে ব্যবহার করা হয় এবং এটি প্যাটার্ন ম্যাচ হলে নির্দিষ্ট অ্যাকশন কার্যকর হয়।
ধরা যাক, আমরা একটি ফাইল data.txt
এর মধ্যে "error" শব্দটি আছে এমন সব লাইন খুঁজে বের করতে চাই:
awk '/error/ {print $0}' data.txt
এখানে, /error/
একটি RegEx প্যাটার্ন যা "error" শব্দ আছে এমন সব লাইন প্রিন্ট করবে।
awk '/^Start/ {print $0}' data.txt
এখানে, /^Start/
প্যাটার্নটি চেক করবে যে কোন লাইন "Start" শব্দ দিয়ে শুরু হয়েছে।
awk '/end$/ {print $0}' data.txt
এখানে, /end$/
প্যাটার্নটি চেক করবে যে কোন লাইন "end" শব্দ দিয়ে শেষ হয়েছে।
AWK এর RegEx এ কিছু বিশেষ চিহ্ন আছে যা বিশেষভাবে টেক্সট ম্যাচিং এর জন্য ব্যবহার করা হয়:
^
: লাইনের শুরু নির্দেশ করে।$
: লাইনের শেষ নির্দেশ করে।.
: যেকোনো একক অক্ষর নির্দেশ করে।*
: শূন্য বা একাধিক পুনরাবৃত্তি নির্দেশ করে।+
: এক বা একাধিক পুনরাবৃত্তি নির্দেশ করে।[]
: ক্যারেক্টারের সেট নির্দেশ করে।|
: OR অপারেটর নির্দেশ করে।awk '/(error|fail|warning)/ {print $0}' data.txt
এখানে, /(error|fail|warning)/
প্যাটার্নটি চেক করবে যে কোন লাইন "error", "fail", বা "warning" শব্দ ধারণ করে।
awk '/^.{5}$/ {print $0}' data.txt
এখানে, /^.{5}$/
প্যাটার্নটি চেক করবে যে কোন লাইন ঠিক ৫টি অক্ষরের সমান।
AWK এ, নির্দিষ্ট ফিল্ডে প্যাটার্ন ম্যাচিং করা যায়। উদাহরণস্বরূপ, দ্বিতীয় ফিল্ডে যদি নির্দিষ্ট প্যাটার্ন থাকে, তবে সেই লাইন প্রিন্ট করতে:
awk '$2 ~ /[0-9]{3}/ {print $0}' data.txt
এখানে, $2 ~ /[0-9]{3}/
শর্তটি চেক করবে যে দ্বিতীয় ফিল্ডে ৩টি সংখ্যা আছে কিনা।
AWK এ !
অপারেটর ব্যবহার করে প্যাটার্ন বাদ দেওয়া যায়।
awk '!/error/ {print $0}' data.txt
এখানে, !/error/
প্যাটার্নটি সেই সব লাইন প্রিন্ট করবে যেখানে "error" শব্দটি নেই।
AWK এ Regular Expressions ব্যবহার করে টেক্সট ম্যাচিং অত্যন্ত সহজ এবং কার্যকর। এটি ব্যবহার করে আপনি বড় ডেটাসেটের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে এবং সেই অনুযায়ী প্রক্রিয়াকরণ করতে পারেন। AWK এর RegEx ক্ষমতা ডেটা বিশ্লেষণকে দ্রুত এবং কার্যকরভাবে সম্পন্ন করতে সহায়তা করে।
AWK এবং অন্যান্য প্রোগ্রামিং ভাষায় Special Characters এবং Meta Characters হল বিশেষ প্রতীক যা সাধারণত নিয়মিত এক্সপ্রেশন (regular expressions) এবং স্ট্রিং প্রসেসিংয়ের জন্য ব্যবহৃত হয়। এদের সাহায্যে জটিল প্যাটার্ন তৈরি এবং ডেটা প্রক্রিয়াকরণ করা যায়।
Special Characters হল এমন প্রতীক যা নির্দিষ্ট কাজ সম্পাদনের জন্য ব্যবহৃত হয়। এগুলি সাধারণত স্ট্রিং এবং আউটপুট ফরম্যাটিংয়ে ব্যবহৃত হয়।
\n
: একটি নিউলাইন নির্দেশ করে।\t
: একটি ট্যাব নির্দেশ করে।\"
: ডাবল কোটেশন চিহ্ন।\\
: ব্যাকস্ল্যাশ চিহ্ন।\r
: ক্যারেজ রিটার্ন নির্দেশ করে।\b
: ব্যাকস্পেস নির্দেশ করে।awk '{
print "Name:\t" $1 "\nScore:\t" $2
}' scores.txt
এখানে, \t
ট্যাব হিসেবে ব্যবহৃত হয়েছে এবং \n
প্রতিটি ফিল্ডের পরে নতুন লাইনে যাওয়ার নির্দেশ দেয়।
Meta Characters হল বিশেষ প্রতীক যা সাধারণত নিয়মিত এক্সপ্রেশন (regex) এ ব্যবহৃত হয়। এগুলি নির্দিষ্ট প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহৃত হয় এবং AWK তে ডেটা ফিল্টার এবং বিশ্লেষণের জন্য কার্যকরী।
.
: যে কোনো একক অক্ষর নির্দেশ করে।^
: লাইনের শুরু নির্দেশ করে।$
: লাইনের শেষ নির্দেশ করে।*
: শূন্য বা একাধিক পুনরাবৃত্তি নির্দেশ করে।+
: এক বা একাধিক পুনরাবৃত্তি নির্দেশ করে।?
: শূন্য বা একটি পুনরাবৃত্তি নির্দেশ করে।[]
: ক্যারেক্টার ক্লাস নির্দেশ করে, যেমন [a-z]
।|
: OR অপারেটর হিসেবে কাজ করে।()
: গ্রুপিং নির্দেশ করে।awk '/^A/ {
print $0
}' names.txt
এখানে, ^A
নির্দেশ করছে যে প্রতিটি লাইন A
অক্ষর দিয়ে শুরু হলে সেই লাইন প্রিন্ট হবে।
awk '/[0-9]+/ {
print $0
}' data.txt
এখানে, [0-9]+
নির্দেশ করছে যে যে কোনো সংখ্যার উপস্থিতি থাকলে সেই লাইন প্রিন্ট হবে।
AWK তে Special এবং Meta Characters একত্রে ব্যবহার করে আরও জটিল প্যাটার্ন তৈরি করা যায়।
awk '/^Error.*code [0-9]{3}$/ {
print $0
}' log.txt
এখানে, ^Error.*code [0-9]{3}$
নির্দেশ করছে যে প্রতিটি লাইন "Error" দিয়ে শুরু হবে, তারপর যেকোনো কিছু থাকতে পারে, এবং শেষে "code" এবং তিন সংখ্যার কোড দিয়ে শেষ হবে।
\
দিয়ে Escape করতে হয়। যেমন, \.
স্ট্রিং হিসাবে ডট ব্যবহার করতে।Special Characters এবং Meta Characters AWK তে স্ট্রিং এবং নিয়মিত এক্সপ্রেশন ব্যবহার করে ডেটা প্রক্রিয়াকরণ এবং ফিল্টার করার ক্ষেত্রে অত্যন্ত কার্যকর। Special Characters সাধারণত স্ট্রিং ম্যানিপুলেশনে ব্যবহৃত হয়, আর Meta Characters নিয়মিত এক্সপ্রেশন তৈরি করতে ব্যবহৃত হয়, যা ডেটা বিশ্লেষণকে আরও সহজ এবং কার্যকর করে।
AWK প্রোগ্রামিং ভাষায় Complex Pattern Matching ব্যবহার করে আপনি জটিল প্যাটার্নের ভিত্তিতে ডেটা ফিল্টার এবং প্রক্রিয়া করতে পারেন। Complex Pattern Matching সাধারণত Regular Expressions, শর্তাবলী, এবং লজিক্যাল অপারেটরগুলির সমন্বয়ে তৈরি করা হয়। এটি বিশেষত বৃহৎ ডেটাসেটের মধ্যে নির্দিষ্ট ধরনের তথ্য খুঁজে বের করার ক্ষেত্রে কার্যকরী।
AWK এ Complex Pattern Matching তৈরি করতে বিভিন্ন উপাদান ব্যবহার করা হয়, যেমন:
&&
, ||
, !
– একাধিক শর্ত যুক্ত করতে।awk '$1 ~ /^[A-Z]/ && $2 > 100 {print $0}' filename.txt
এখানে:
$1 ~ /^[A-Z]/
শর্তটি চেক করে যে প্রথম কলামের মান বড় হাতের অক্ষরে শুরু হয়েছে কিনা।$2 > 100
শর্তটি চেক করে যে দ্বিতীয় কলামের মান ১০০ এর বেশি কিনা।&&
লজিক্যাল অপারেটর ব্যবহার করে দুইটি শর্তকে একত্রিত করা হয়েছে।এই প্যাটার্নটি ম্যাচ হলে পুরো লাইন প্রিন্ট করা হবে।
awk '$1 == "Error" || $3 ~ /critical/ {print $1, $3}' filename.txt
এখানে:
$1 == "Error"
শর্তটি চেক করে যে প্রথম কলাম "Error" কিনা।$3 ~ /critical/
শর্তটি চেক করে যে তৃতীয় কলামে "critical" শব্দটি রয়েছে কিনা।||
লজিক্যাল অপারেটর ব্যবহার করে শর্তগুলির মধ্যে OR সম্পর্ক স্থাপন করা হয়েছে।এই কমান্ডটি "Error" বা "critical" শব্দ যুক্ত লাইনগুলি প্রিন্ট করবে।
awk '!($2 ~ /skip/) && $4 > 50 {print $0}' filename.txt
এখানে:
!($2 ~ /skip/)
শর্তটি চেক করে যে দ্বিতীয় কলামে "skip" শব্দটি নেই।$4 > 50
শর্তটি চেক করে যে চতুর্থ কলামের মান ৫০ এর বেশি।&&
অপারেটর ব্যবহার করে দুটি শর্ত যুক্ত করা হয়েছে।যদি দ্বিতীয় কলামে "skip" না থাকে এবং চতুর্থ কলামের মান ৫০ এর বেশি হয়, তবে সেই লাইনটি প্রিন্ট হবে।
awk '/^START/ || /END$/ {print "Boundary:", $0} $3 ~ /^[0-9]+$/ {print "Number:", $3}' filename.txt
এখানে:
/^START/ || /END$/
অংশটি এমন লাইনগুলিকে খুঁজে বের করবে যা "START" শব্দ দিয়ে শুরু হয় বা "END" শব্দ দিয়ে শেষ হয় এবং প্রিন্ট করবে "Boundary" সহ।$3 ~ /^[0-9]+$/
অংশটি তৃতীয় কলামে শুধুমাত্র সংখ্যা আছে কিনা চেক করবে এবং সেই মান "Number" সহ প্রিন্ট করবে।AWK এ Complex Pattern Matching ব্যবহার করে জটিল ডেটা ফিল্টারিং এবং প্রসেসিং সহজে করা যায়। Regular Expressions, লজিক্যাল অপারেটর এবং শর্তাবলী ব্যবহার করে AWK প্রোগ্রামে উন্নত প্যাটার্ন ম্যাচিং তৈরি করা সম্ভব। এর ফলে, বড় ডেটাসেটের মধ্যে নির্দিষ্ট তথ্য খুঁজে বের করা, ফিল্টার করা এবং প্রক্রিয়া করা আরও কার্যকর হয়।
common.read_more