Sed (Stream Editor) ব্যবহার করে Search and Replace এর জন্য Complex Patterns (জটিল প্যাটার্ন) তৈরি করা সম্ভব। রেগুলার এক্সপ্রেশন (Regular Expressions) ব্যবহার করে আপনি যেকোনো ধরনের টেক্সট বা প্যাটার্ন খুঁজে বের করতে এবং সেগুলোর সাথে মিল পাওয়া হলে প্রতিস্থাপন করতে পারেন। Sed এ Search and Replace এর জন্য Complex Patterns তৈরি করতে আপনাকে Advanced Regular Expressions ব্যবহার করতে হয়।
এখানে Complex Patterns এর কিছু উদাহরণ এবং তার ব্যবহার নিয়ে আলোচনা করা হলো।
Sed এ Complex Patterns এর জন্য রেগুলার এক্সপ্রেশন
1. Dot (.) এবং Asterisk (*) ব্যবহার
.(Dot) কোনো একটি একক চরিত্রের সাথে মেলে।*(Asterisk) পূর্ববর্তী চরিত্রের শূন্য বা তার বেশি পুনরাবৃত্তি মিলায়।
Example: যদি আপনি "c" এবং "t" এর মাঝে যেকোনো একক চরিত্রের সাথে মেলে এমন শব্দটি প্রতিস্থাপন করতে চান:
sed 's/c.t/dog/g' file.txtএটি:
- "cat", "cot", "cut" ইত্যাদি শব্দকে "dog"-এ প্রতিস্থাপন করবে।
2. ^ (Caret) এবং $ (Dollar) ব্যবহার
^: এটি লাইনের শুরুতে প্যাটার্ন মিলাতে ব্যবহৃত হয়।$: এটি লাইনের শেষে প্যাটার্ন মিলাতে ব্যবহৃত হয়।
Example: আপনি যদি এমন শব্দ প্রতিস্থাপন করতে চান যা একটি লাইন শুরু বা শেষ হয়:
- শুরুতে "cat" এবং শেষে "dog":
sed 's/^cat/dog/' file.txt- লাইনের শেষে "cat" দিয়ে "dog" প্রতিস্থাপন:
sed 's/cat$/dog/' file.txt3. Character Classes (চরিত্র শ্রেণী) ব্যবহার
[aeiou]: যেকোনো স্বরবর্ণ (vowel) খুঁজে।[^a-z]: ছোট হাতের অক্ষর বাদে অন্য সব কিছু খুঁজে।
Example: যদি আপনি সমস্ত সংখ্যাকে "NUMBER" দিয়ে প্রতিস্থাপন করতে চান:
sed 's/[0-9]\+/NUMBER/g' file.txtএটি:
- সব সংখ্যা (যতগুলো একাধিক সংখ্যা পরপর আছে) "NUMBER"-এ প্রতিস্থাপন করবে।
Example: যদি আপনি শুধু ছোট হাতের অক্ষরের মধ্যে একটি "a" এর সাথে মিল খুঁজে প্রতিস্থাপন করতে চান:
sed 's/[a-z]*a[a-z]*/replacement/g' file.txtএটি:
- যেকোনো শব্দের মধ্যে "a" শব্দটি খুঁজে এবং সেটি "replacement"-এ প্রতিস্থাপন করবে।
4. Grouping এবং Backreferences (গ্রুপিং এবং ব্যাকরেফারেন্স)
Sed এ grouping এবং backreferences ব্যবহার করে আপনি capturing groups তৈরি করতে পারেন এবং পরে সেগুলি প্রতিস্থাপন করতে পারেন।
\( ... \): এটি গ্রুপিং করতে ব্যবহৃত হয়।\1,\2, ...: ব্যাকরেফারেন্স, যা গ্রুপে পাওয়া প্যাটার্নের পুনঃব্যবহার।
Example: যদি আপনি এমন প্যাটার্ন খুঁজে বের করতে চান যা দুটি সংখ্যা এর মাঝে একটি হাইফেন (dash) থাকে এবং তারপর সেই প্যাটার্নের সাথে প্রতিস্থাপন করতে চান:
sed 's/\([0-9]\{2\}\)-\([0-9]\{2\}\)/\2-\1/g' file.txtএটি:
- ২টি সংখ্যার মধ্যে থাকা হাইফেনযুক্ত প্যাটার্নটি পরিবর্তন করে, যেমন "12-34" কে "34-12"-এ পরিবর্তন করবে।
5. \b (Word Boundaries) ব্যবহার
\b: এটি শব্দের সীমানায় মিল খুঁজে।
Example: যদি আপনি এমন শব্দ খুঁজে বের করতে চান যা "cat" দিয়ে শুরু এবং কোনো শব্দের শেষে থাকে, তাহলে:
sed 's/\bcat\b/dog/g' file.txtএটি:
- "cat" শব্দটি শুধুমাত্র যেখানে আলাদা শব্দ হিসেবে ব্যবহৃত হয়েছে, সেখানে "dog"-এ প্রতিস্থাপন করবে।
6. OR (|) ব্যবহার
Sed এ OR অপারেটর | ব্যবহৃত হয় যখন আপনি দুটি বা তার বেশি প্যাটার্নের মধ্যে মেলানো চান।
Example: যদি আপনি "cat" অথবা "dog" শব্দের মধ্যে যেকোনো একটির সাথে মেলে এমন লাইনগুলো পরিবর্তন করতে চান:
sed 's/cat\|dog/animal/g' file.txtএটি:
- "cat" অথবা "dog" এর যে কোনো একটি শব্দ "animal"-এ প্রতিস্থাপন করবে।
7. Matching Multiple Lines (একাধিক লাইনে মিল খুঁজে)
Sed সাধারণত একটি লাইন নিয়ে কাজ করে, তবে আপনি multiple lines এর সাথে মিল খুঁজতে N, P এবং D কমান্ড ব্যবহার করতে পারেন।
Example: যদি আপনি দুটি লাইন একসাথে যুক্ত করে কোনও নির্দিষ্ট প্যাটার্ন খুঁজে তা প্রতিস্থাপন করতে চান, তাহলে:
sed ':a;N;$!ba;s/\n/ /g' file.txtএটি সমস্ত লাইনগুলিকে একত্রিত করে এবং প্রতিটি লাইনের মধ্যে থাকা newline (\n) সরিয়ে দেয়, যাতে পুরো ফাইল একটি একক লাইন হয়ে যায় এবং তারপর আপনি প্যাটার্নের সাথে পরিবর্তন করতে পারবেন।
সারাংশ
Search and Replace এর জন্য Complex Patterns তৈরি করতে Sed এ Regular Expressions ব্যবহার করা হয়। আপনি dot (.), asterisk (*), caret (^), dollar ($), character classes, grouping, backreferences, OR (|) অপারেটর এবং word boundaries এর মতো রেগুলার এক্সপ্রেশন সরঞ্জাম ব্যবহার করে জটিল প্যাটার্ন মেচিং এবং প্রতিস্থাপন করতে পারেন। এটি আপনাকে টেক্সট ফাইলগুলির মধ্যে দ্রুত এবং কার্যকর পরিবর্তন করতে সহায়তা করে।
Read more