Text Processing এবং String Handling
AWK একটি শক্তিশালী টেক্সট প্রসেসিং ভাষা যা টেক্সট ফাইলের তথ্য বিশ্লেষণ এবং পরিচালনা করতে ব্যবহৃত হয়। টেক্সট প্রসেসিংয়ের সময় স্ট্রিং হ্যান্ডলিং অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি ডেটাকে সুসংগঠিত এবং বিশ্লেষণ করতে সহায়তা করে। এই অংশে, আমরা AWK এ টেক্সট প্রসেসিং এবং স্ট্রিং হ্যান্ডলিং এর বিভিন্ন দিক নিয়ে আলোচনা করব।
টেক্সট প্রসেসিং
AWK মূলত একটি টেবিল-ভিত্তিক ভাষা, যেখানে প্রতিটি রেকর্ড একটি লাইন এবং প্রতিটি ফিল্ড একটি কলাম। AWK এর মাধ্যমে ব্যবহারকারীরা সহজে ডেটা ফিল্টার করতে, বিশ্লেষণ করতে এবং প্রক্রিয়া করতে পারেন।
মৌলিক টেক্সট প্রসেসিং কাজ
লাইন প্রিন্ট করা:
awk '{print}' filename.txtএই কমান্ডটি
filename.txtফাইলের সমস্ত লাইন প্রিন্ট করবে।নির্দিষ্ট কলাম প্রিন্ট করা:
awk '{print $1, $3}' filename.txtএখানে, প্রথম এবং তৃতীয় কলাম প্রিন্ট করা হবে।
নিয়মিত এক্সপ্রেশন ব্যবহার:
awk '/pattern/ {print}' filename.txtএখানে
patternশব্দটি পাওয়া লাইনগুলো প্রিন্ট হবে।
স্ট্রিং হ্যান্ডলিং
AWK এ স্ট্রিং হ্যান্ডলিং টেক্সট প্রসেসিংয়ের একটি গুরুত্বপূর্ণ অংশ। AWK কিছু বিল্ট-ইন ফাংশন সরবরাহ করে যা স্ট্রিং ম্যানিপুলেশনে সহায়ক।
স্ট্রিং ফাংশন
length() ফাংশন:
স্ট্রিংয়ের দৈর্ঘ্য নির্ধারণ করে।awk 'BEGIN { str = "Hello"; print length(str); }'substr() ফাংশন:
একটি স্ট্রিং থেকে সাবস্ট্রিং প্রদান করে।awk 'BEGIN { str = "Hello World"; print substr(str, 1, 5); }'এখানে, এটি "Hello" প্রিন্ট করবে।
toupper() ফাংশন:
স্ট্রিংকে বড় হাতের অক্ষরে রূপান্তর করে।awk 'BEGIN { str = "hello"; print toupper(str); }'tolower() ফাংশন:
স্ট্রিংকে ছোট হাতের অক্ষরে রূপান্তর করে।awk 'BEGIN { str = "HELLO"; print tolower(str); }'index() ফাংশন:
একটি স্ট্রিংয়ের মধ্যে একটি সাবস্ট্রিং খুঁজে বের করে তার অবস্থান প্রদান করে।awk 'BEGIN { str = "Hello World"; print index(str, "World"); }'
স্ট্রিং কনক্যাটেনেশন
AWK এ স্ট্রিং কনক্যাটেনেশন করা সহজ। বিভিন্ন স্ট্রিং একত্রিত করতে সাধারণভাবে সাদামাঠা অপারেটর ব্যবহার করা হয়।
উদাহরণ:
awk 'BEGIN { str1 = "Hello"; str2 = "World"; print str1 " " str2; }'এটি "Hello World" প্রিন্ট করবে।
সারসংক্ষেপ
AWK টেক্সট প্রসেসিং এবং স্ট্রিং হ্যান্ডলিংয়ের জন্য একটি অত্যন্ত কার্যকরী ভাষা। ব্যবহারকারীরা সহজেই টেক্সট ডেটা বিশ্লেষণ এবং পরিচালনা করতে পারেন, এবং AWK এর বিল্ট-ইন স্ট্রিং ফাংশনগুলি ডেটাকে প্রক্রিয়া করার সময় আরও কার্যকরীতা প্রদান করে। এই টেক্সট প্রসেসিং ক্ষমতা AWK কে একটি জনপ্রিয় টুল করে তুলেছে বিশেষ করে ডেটাবেস, লগ ফাইল, এবং সারণীর তথ্য বিশ্লেষণে।
Strings এর সাথে কাজ করা
Strings হল প্রোগ্রামিংয়ের একটি মৌলিক ডেটা টাইপ, যা অক্ষরের একটি সিরিজ (character sequence) নিয়ে গঠিত। Strings সাধারণত টেক্সট তথ্য সংরক্ষণ করতে ব্যবহৃত হয় এবং প্রোগ্রামিং ভাষায় বিভিন্ন অপারেশন সম্পাদন করার জন্য গুরুত্বপূর্ণ। এখানে আমরা Strings এর সাথে বিভিন্ন কাজ এবং অপারেশন নিয়ে আলোচনা করব।
1. String তৈরি
Strings তৈরি করা সাধারণত খুবই সহজ। বেশিরভাগ প্রোগ্রামিং ভাষায়, একটি String তৈরি করতে একটি ডাবল কোটেশন (") অথবা সিঙ্গেল কোটেশন (') ব্যবহার করা হয়।
উদাহরণ:
# Python
greeting = "Hello, World!"// JavaScript
var greeting = "Hello, World!";2. String concatenation
Strings যুক্ত করার প্রক্রিয়াকে String concatenation বলা হয়। এটি সাধারণত + অপারেটর ব্যবহার করে করা হয়।
উদাহরণ:
# Python
first_name = "John"
last_name = "Doe"
full_name = first_name + " " + last_name
print(full_name) # ফলস্বরূপ: John Doe// JavaScript
var firstName = "John";
var lastName = "Doe";
var fullName = firstName + " " + lastName;
console.log(fullName); // ফলস্বরূপ: John Doe3. String length
Strings-এর দৈর্ঘ্য নির্ধারণ করতে বিভিন্ন প্রোগ্রামিং ভাষায় নির্দিষ্ট ফাংশন ব্যবহার করা হয়। এটি String-এর মধ্যে মোট অক্ষরের সংখ্যা দেয়।
উদাহরণ:
# Python
my_string = "Hello"
length = len(my_string)
print(length) # ফলস্বরূপ: 5// JavaScript
var myString = "Hello";
var length = myString.length;
console.log(length); // ফলস্বরূপ: 54. String slicing (Substring)
Strings-এর মধ্যে নির্দিষ্ট অংশ বের করার জন্য slicing ব্যবহার করা হয়। এটি সাধারণত স্ট্রিংয়ের শুরু এবং শেষ সূচক নির্দেশ করে।
উদাহরণ:
# Python
my_string = "Hello, World!"
substring = my_string[0:5]
print(substring) # ফলস্বরূপ: Hello// JavaScript
var myString = "Hello, World!";
var substring = myString.substring(0, 5);
console.log(substring); // ফলস্বরূপ: Hello5. String formatting
String-এর মধ্যে ভেরিয়েবলের মান অন্তর্ভুক্ত করার জন্য formatting ব্যবহার করা হয়। এটি ব্যবহারকারীর জন্য পড়তে সহজ একটি আউটপুট তৈরি করে।
উদাহরণ:
# Python
name = "Alice"
age = 30
formatted_string = f"My name is {name} and I am {age} years old."
print(formatted_string) # ফলস্বরূপ: My name is Alice and I am 30 years old.// JavaScript
var name = "Alice";
var age = 30;
var formattedString = `My name is ${name} and I am ${age} years old.`;
console.log(formattedString); // ফলস্বরূপ: My name is Alice and I am 30 years old.6. String manipulation functions
Strings-এর সাথে বিভিন্ন কাজ সম্পাদনের জন্য বিভিন্ন Built-in functions ব্যবহার করা হয়, যেমন:
- replace(): একটি স্ট্রিংয়ের একটি অংশ প্রতিস্থাপন করে।
- split(): একটি স্ট্রিংকে একটি delimiter ব্যবহার করে বিভক্ত করে।
- join(): একটি তালিকার স্ট্রিংগুলিকে একত্রিত করে।
উদাহরণ:
# Python
my_string = "Hello, World!"
new_string = my_string.replace("World", "Python")
print(new_string) # ফলস্বরূপ: Hello, Python!
words = my_string.split(", ")
print(words) # ফলস্বরূপ: ['Hello', 'World!']// JavaScript
var myString = "Hello, World!";
var newString = myString.replace("World", "JavaScript");
console.log(newString); // ফলস্বরূপ: Hello, JavaScript!
var words = myString.split(", ");
console.log(words); // ফলস্বরূপ: ["Hello", "World!"]সারসংক্ষেপ
Strings হল প্রোগ্রামিংয়ের একটি অত্যন্ত গুরুত্বপূর্ণ ডেটা টাইপ, যা বিভিন্ন টেক্সট তথ্য সংরক্ষণ করতে ব্যবহৃত হয়। Strings-এর সাথে কাজ করার জন্য বিভিন্ন অপারেশন এবং ফাংশন ব্যবহার করা হয়, যা প্রোগ্রামারদের ডেটা ম্যানিপুলেশনকে সহজ করে। এই অপারেশনগুলি অন্তর্ভুক্ত করে String তৈরি, concatenation, length নির্ধারণ, slicing, formatting, এবং অন্যান্য বিভিন্ন কার্যকরী ফাংশন। Strings-এর সঠিক ব্যবহারের মাধ্যমে প্রোগ্রামাররা কার্যকরী এবং সঠিক কোড তৈরি করতে সক্ষম হন।
String Concatenation এবং Manipulation
AWK তে String Concatenation এবং Manipulation হল টেক্সট তথ্যের সাথে কাজ করার জন্য ব্যবহৃত বিভিন্ন পদ্ধতি। String Concatenation মানে হল দুটি বা তার বেশি স্ট্রিংকে একত্রিত করা, এবং String Manipulation হল স্ট্রিংগুলির উপর বিভিন্ন অপারেশন সম্পাদন করা, যেমন কাটছাঁট করা, পরিবর্তন করা বা বিশ্লেষণ করা। এখানে AWK তে String Concatenation এবং Manipulation এর কিছু সাধারণ পদ্ধতি এবং উদাহরণ দেওয়া হলো।
String Concatenation
AWK তে স্ট্রিং সংযুক্ত করার জন্য " (ডাবল কোটেশন) বা ' (সিঙ্গল কোটেশন) চিহ্নের মধ্যে স্ট্রিং লিখতে হয়। স্ট্রিংগুলি একত্রিত করার জন্য সাধারণত "" বা "" এর মধ্যে একটি ফাঁকা স্থান ব্যবহার করা হয়।
উদাহরণ:
awk '{
full_name = $1 " " $2 # প্রথম এবং দ্বিতীয় কলামকে সংযুক্ত করা
print "Full Name:", full_name
}' names.txtএখানে $1 এবং $2 কলামগুলির মান সংযুক্ত করা হয়েছে, এবং একটি পূর্ণ নাম তৈরি করা হয়েছে।
String Manipulation
AWK তে String Manipulation এর মাধ্যমে বিভিন্ন অপারেশন করা যেতে পারে, যেমন substring extraction, length নির্ণয়, এবং pattern matching।
1. Substring Extraction
substr(string, start, length) ফাংশন ব্যবহার করে একটি স্ট্রিং থেকে একটি সাবস্ট্রিং বের করা যায়।
awk '{
short_name = substr($1, 1, 3 # প্রথম তিন অক্ষর বের করা
print "Short Name:", short_name
}' names.txtএখানে $1 এর প্রথম তিনটি অক্ষর বের করা হয়েছে।
2. String Length
length(string) ফাংশন ব্যবহার করে একটি স্ট্রিং এর দৈর্ঘ্য নির্ণয় করা যায়।
awk '{
len = length($1) # প্রথম কলামের স্ট্রিং এর দৈর্ঘ্য
print "Length of", $1, "is", len
}' names.txtএখানে $1 এর দৈর্ঘ্য বের করা হয়েছে।
3. Pattern Matching
AWK তে match(string, regex) ফাংশন ব্যবহার করে একটি স্ট্রিংয়ের মধ্যে একটি প্যাটার্ন অনুসন্ধান করা যায়।
awk '{
if (match($1, /^A/)) { # যদি প্রথম কলামের নাম 'A' দিয়ে শুরু হয়
print $1 " starts with A"
}
}' names.txtএখানে $1 এর মধ্যে 'A' দিয়ে শুরু হওয়া নাম খুঁজে বের করা হয়েছে।
উদাহরণ: একটি সম্পূর্ণ প্রোগ্রাম
নিচে একটি পূর্ণ AWK প্রোগ্রাম দেওয়া হলো যা স্ট্রিং সংযুক্ত করা এবং স্ট্রিং ম্যানিপুলেশন কার্যক্রম প্রদর্শন করে:
awk '{
# স্ট্রিং কনক্যাটেনেশন
full_name = $1 " " $2
print "Full Name:", full_name
# সাবস্ট্রিং বের করা
initials = substr($1, 1, 1) "." substr($2, 1, 1) "."
print "Initials:", initials
# দৈর্ঘ্য নির্ণয়
print "Length of Full Name:", length(full_name)
# প্যাটার্ন ম্যাচিং
if (match(full_name, /Alice/)) {
print full_name " is present."
}
}' names.txtএখানে, প্রোগ্রামটি নামের প্রথম এবং দ্বিতীয় কলামকে সংযুক্ত করে, ইনিশিয়ালস তৈরি করে, পূর্ণ নামের দৈর্ঘ্য নির্ণয় করে, এবং একটি নির্দিষ্ট প্যাটার্ন অনুসন্ধান করে।
সারসংক্ষেপ
AWK তে String Concatenation এবং Manipulation ব্যবহারকারীদের টেক্সট তথ্য নিয়ে কাজ করতে সাহায্য করে। String Concatenation দুটি বা তার বেশি স্ট্রিংকে একত্রিত করার জন্য ব্যবহৃত হয়, যখন String Manipulation বিভিন্ন ধরনের অপারেশন সম্পাদন করার জন্য ব্যবহৃত হয়, যেমন সাবস্ট্রিং বের করা, দৈর্ঘ্য নির্ণয়, এবং প্যাটার্ন ম্যাচিং। এই কার্যক্রমগুলি AWK তে ডেটা প্রক্রিয়াকরণকে আরও কার্যকর এবং ফলপ্রসূ করে।
AWK এ Regular Expressions এর মাধ্যমে Text Matching
Regular Expressions (regex) হল একটি শক্তিশালী টুল যা টেক্সটের মধ্যে প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহৃত হয়। AWK এ রেগুলার এক্সপ্রেশনগুলি টেক্সট ডেটা বিশ্লেষণ, ফিল্টারিং এবং পরিবর্তনের কাজকে সহজ করে। নিচে AWK এ রেগুলার এক্সপ্রেশন ব্যবহার করে টেক্সট ম্যাচিংয়ের বিভিন্ন পদ্ধতি আলোচনা করা হলো।
১. রেগুলার এক্সপ্রেশন কী?
রেগুলার এক্সপ্রেশন একটি নির্দিষ্ট প্যাটার্নের জন্য স্ট্রিং (লেখা) অনুসন্ধানের একটি উপায়। এটি বিশেষ চিহ্ন এবং সিনট্যাক্স ব্যবহার করে বিভিন্ন ধরণের টেক্সট প্যাটার্ন নির্দেশ করে। কিছু সাধারণ রেগুলার এক্সপ্রেশন চিহ্ন হল:
.: যেকোন একক অক্ষর*: পূর্ববর্তী অক্ষর 0 বা তার বেশি বার+: পূর্ববর্তী অক্ষর 1 বা তার বেশি বার?: পূর্ববর্তী অক্ষর 0 বা 1 বার^: স্ট্রিংয়ের শুরু$: স্ট্রিংয়ের শেষ[]: একটি সেট, যেকোন এক অক্ষর নির্দেশ করে (যেমন[abc]মানে a, b, অথবা c)|: অথবা
২. AWK এ Regular Expressions ব্যবহার
AWK এ রেগুলার এক্সপ্রেশন ব্যবহার করে টেক্সটের মধ্যে প্যাটার্ন খুঁজে বের করা যায় এবং বিভিন্ন শর্ত অনুযায়ী ডেটা প্রক্রিয়া করা যায়।
উদাহরণ ১: সাধারণ প্যাটার্ন ম্যাচিং
awk '/error/ {print $0}' logfile.txtএটি logfile.txt ফাইলের মধ্যে "error" শব্দযুক্ত সব লাইন প্রিন্ট করবে।
উদাহরণ ২: শুরুতে বা শেষে প্যাটার্ন
awk '/^start/ {print $0}' filename.txtএটি filename.txt ফাইলের মধ্যে যেসব লাইন "start" শব্দ দিয়ে শুরু হয়, সেগুলি প্রিন্ট করবে।
awk '/end$/ {print $0}' filename.txtএটি filename.txt ফাইলের মধ্যে যেসব লাইন "end" শব্দ দিয়ে শেষ হয়, সেগুলি প্রিন্ট করবে।
উদাহরণ ৩: বিভিন্ন প্যাটার্ন ব্যবহার
awk '/[A-Z]/ {print $0}' filename.txtএটি filename.txt ফাইলের মধ্যে যেসব লাইন অন্তত একটি বড় হাতের অক্ষর (A-Z) রয়েছে, সেগুলি প্রিন্ট করবে।
উদাহরণ ৪: শর্তযুক্ত প্যাটার্ন ম্যাচিং
awk '$1 ~ /^[0-9]+$/ {print $0}' filename.txtএটি filename.txt ফাইলের মধ্যে যেসব লাইন প্রথম ফিল্ডে শুধুমাত্র সংখ্যা (0-9) রয়েছে, সেগুলি প্রিন্ট করবে।
উদাহরণ ৫: প্যাটার্ন ব্যবহার করে পরিবর্তন
awk '{gsub(/oldword/, "newword"); print $0}' filename.txtএটি filename.txt ফাইলে "oldword" শব্দটি "newword" দিয়ে পরিবর্তন করে নতুন টেক্সট প্রিন্ট করবে।
৩. সারসংক্ষেপ
AWK এ রেগুলার এক্সপ্রেশন ব্যবহার করে টেক্সট ডেটার মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করা এবং প্রক্রিয়া করা সহজ এবং কার্যকর। এটি ডেটা বিশ্লেষণের সময় কার্যকরী টুল হিসেবে কাজ করে। AWK এর এই বৈশিষ্ট্যগুলি ডেটা ফাইলগুলির মধ্যে তথ্য বের করতে এবং বিশ্লেষণ করতে সাহায্য করে, যা বিভিন্ন প্রয়োজনে অত্যন্ত কার্যকরী।
AWK এ Substring এবং Split ফাংশন এর ব্যবহার
AWK একটি শক্তিশালী প্রোগ্রামিং ভাষা যা টেক্সট প্রসেসিং এবং ডেটা বিশ্লেষণের জন্য ব্যাপকভাবে ব্যবহৃত হয়। এই ভাষায় substring এবং split ফাংশন ব্যবহার করে টেক্সটের নির্দিষ্ট অংশগুলি আলাদা করা যায়। নিচে এই দুটি ফাংশনের ব্যবহার এবং উদাহরণগুলি আলোচনা করা হলো।
১. Substring ফাংশন
AWK এ substr() ফাংশন ব্যবহার করে একটি স্ট্রিং থেকে নির্দিষ্ট অংশ বের করা যায়। এর সিনট্যাক্স নিম্নরূপ:
substr(string, start, length)- string: যে স্ট্রিং থেকে সাবস্ট্রিংটি বের করতে হবে।
- start: যেখানে থেকে সাবস্ট্রিং শুরু হবে (1 থেকে শুরু হয়)।
- length (বিকল্প): সাবস্ট্রিংটির দৈর্ঘ্য কত হবে।
উদাহরণ: Substring ফাংশন ব্যবহার
awk '{ sub_str = substr($1, 1, 3) # প্রথম কলামের প্রথম 3 অক্ষর নিন
print "Substring of " $1 " is: " sub_str
}' filename.txtএখানে, প্রথম কলামের প্রথম তিনটি অক্ষর বের করা হয়েছে।
২. Split ফাংশন
AWK এ split() ফাংশন ব্যবহার করে একটি স্ট্রিংকে বিভক্ত করে আলাদা আলাদা অংশে রূপান্তর করা যায়। এর সিনট্যাক্স নিম্নরূপ:
split(string, array, delimiter)- string: যে স্ট্রিংকে বিভক্ত করতে হবে।
- array: একটি অ্যারে যেখানে বিভক্ত অংশগুলি সংরক্ষণ করা হবে।
- delimiter (বিকল্প): যে চিহ্নের উপর ভিত্তি করে স্ট্রিং বিভক্ত হবে (যদি উল্লেখ করা না হয়, তাহলে ডিফল্ট হলো স্পেস)।
উদাহরণ: Split ফাংশন ব্যবহার
awk '{
split($0, arr, ",") # সম্পূর্ণ লাইনে কমা ব্যবহার করে বিভক্ত করুন
for (i = 1; i <= length(arr); i++) {
print "Element " i ": " arr[i] # প্রতিটি উপাদান প্রিন্ট করুন
}
}' filename.txtএখানে, পুরো লাইনে কমা দিয়ে বিভক্ত করে একটি অ্যারেতে সংরক্ষণ করা হয়েছে এবং তারপর প্রতিটি উপাদান প্রিন্ট করা হয়েছে।
একত্রিত উদাহরণ
নিচে একটি উদাহরণ দেওয়া হলো যেখানে substr এবং split উভয় ফাংশন একসাথে ব্যবহার করা হয়েছে:
awk '{
split($0, arr, " ") # লাইনে স্পেস দ্বারা বিভক্ত করুন
first_name = arr[1] # প্রথম নাম নিন
last_name = arr[2] # শেষ নাম নিন
initials = substr(first_name, 1, 1) substr(last_name, 1, 1) # প্রথম এবং শেষ নামের প্রথম অক্ষর নিন
print "Initials: " initials
}' filename.txtএখানে, প্রথম এবং শেষ নামের প্রথম অক্ষরগুলো আলাদা করে তাদের ইনিশিয়াল তৈরি করা হয়েছে।
সারসংক্ষেপ
AWK তে substr() এবং split() ফাংশন ব্যবহার করে স্ট্রিংগুলির সাথে কাজ করা অনেক সহজ এবং কার্যকর। substr() ফাংশন ব্যবহার করে স্ট্রিংয়ের একটি নির্দিষ্ট অংশ বের করা যায়, এবং split() ফাংশন ব্যবহার করে একটি স্ট্রিংকে বিভিন্ন অংশে বিভক্ত করা যায়। এই ফাংশনগুলি টেক্সট বিশ্লেষণ এবং ডেটা প্রক্রিয়াকরণের সময় বিশেষভাবে কার্যকরী। AWK এর এই ক্ষমতা ব্যবহার করে, আপনি আপনার ডেটা বিশ্লেষণের কাজকে আরও দ্রুত এবং কার্যকরভাবে সম্পন্ন করতে পারেন।
Read more