Sed (Stream Editor) এর মাধ্যমে আপনি complex patterns এবং তাদের matching techniques ব্যবহার করে অত্যন্ত শক্তিশালী টেক্সট ম্যানিপুলেশন করতে পারেন। Sed রেগুলার এক্সপ্রেশন (regular expressions বা regex) সমর্থন করে, যা আপনাকে খুবই জটিল প্যাটার্নের জন্য খোঁজ এবং প্রতিস্থাপন করতে সাহায্য করে। এর মাধ্যমে আপনি টেক্সটের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে এবং পরিবর্তন করতে পারেন, এমনকি যখন সেই প্যাটার্নগুলি অত্যন্ত জটিল বা ভিন্ন রূপে উপস্থিত থাকে।
Sed এবং Complex Patterns
Sed এর মাধ্যমে complex patterns খুঁজতে আপনি regular expressions ব্যবহার করতে পারেন। রেগুলার এক্সপ্রেশনগুলো একটি শক্তিশালী ভাষা, যা টেক্সটের বিশেষ অংশ চিহ্নিত করতে এবং পরিচালনা করতে ব্যবহৃত হয়। Sed এ এটি প্রায়ই search, replace, insert, delete অপারেশনগুলির জন্য ব্যবহৃত হয়।
Complex Patterns এর Matching Techniques
ব্র্যাকেট ব্যবহার করা (Character Classes)
Character classes আপনাকে একাধিক অক্ষরের মধ্যে মিল খুঁজতে সাহায্য করে। এগুলো সাধারণত
[]এর মধ্যে লেখা হয়।- [a-z]: ছোট হাতের অক্ষর (a থেকে z)
- [A-Z]: বড় হাতের অক্ষর (A থেকে Z)
- [0-9]: ডিজিট (0 থেকে 9)
- [^abc]: যে কোনো কিছু except "a", "b", বা "c"
উদাহরণ:
sed '/[a-z]/p' file.txtএটি
file.txtফাইলের সব লাইন প্রদর্শন করবে যেখানে কোনো ছোট হাতের অক্ষর আছে।নির্দিষ্ট সংখ্যা ব্যবহার (Repetitions)
Sed এর মাধ্যমে আপনি repetition বা পুনরাবৃত্তির জন্য কিছু বিশেষ চিহ্ন ব্যবহার করতে পারেন।
- {n}: একটি প্যাটার্নকে n বার পুনরাবৃত্তি করা।
- {n,m}: একটি প্যাটার্নকে n থেকে m বার পুনরাবৃত্তি করা।
- {,m}: একটি প্যাটার্নকে m বার বা তার কম পুনরাবৃত্তি করা।
উদাহরণ:
sed 's/[0-9]\{3\}/XYZ/' file.txtএটি
file.txtফাইলের যেকোনো ৩ ডিজিট সংখ্যাকে "XYZ" দিয়ে প্রতিস্থাপন করবে।প্লাস এবং অ্যাস্টারিস্ক (Quantifiers)
আপনি + এবং * ব্যবহার করে আরও জটিল প্যাটার্ন তৈরি করতে পারেন।
- +: এক বা একাধিক পুনরাবৃত্তি।
- *: শূন্য বা একাধিক পুনরাবৃত্তি।
উদাহরণ:
sed 's/a\+/X/' file.txtএটি
file.txtফাইলে পরপর যেকোনো "a" গুলোকে "X"-এ প্রতিস্থাপন করবে।বিকল্প বা OR অপারেটর (Alternation)
|(অথবা) অপারেটর দিয়ে আপনি একাধিক প্যাটার্নের মধ্যে বিকল্প তৈরি করতে পারেন।উদাহরণ:
sed 's/cat\|dog/animal/' file.txtএটি
file.txtফাইলে "cat" অথবা "dog" যেকোনো শব্দকে "animal" দিয়ে প্রতিস্থাপন করবে।গ্রুপিং (Grouping)
Sed এ আপনি প্যাটার্নের গ্রুপিং করতে পারেন যাতে একাধিক অংশকে একসঙ্গে ম্যাচ করতে পারেন। এটি সাধারণত
()দিয়ে করা হয়।উদাহরণ:
sed 's/\(cat\) \(dog\)/\2 \1/' file.txtএটি
file.txtফাইলে "cat dog" কে "dog cat"-এ পরিবর্তন করবে।ব্যাকরেফারেন্স (Backreferences)
যখন আপনি প্যাটার্ন গ্রুপিং ব্যবহার করেন, তখন আপনি সেই গ্রুপের অংশগুলিকে backreference হিসেবে ব্যবহার করতে পারেন।
- \1, \2, ... : প্যাটার্ন গ্রুপের প্রথম, দ্বিতীয়, ইত্যাদি অংশের রেফারেন্স।
উদাহরণ:
sed 's/\(cat\) \(dog\)/\2 \1/' file.txtএখানে
\(cat\)এবং\(dog\)দুটি গ্রুপ হিসেবে কাজ করে এবং \2 এবং \1 ব্যাকরেফারেন্স ব্যবহার করা হয়।আগ্রহী সীমা (Anchors)
Sed এ আপনি ^ (স্টার্ট) এবং $ (এন্ড) ব্যবহার করে প্যাটার্নের শুরুর বা শেষের দিকে ম্যাচিং করতে পারেন।
- ^: লাইনের শুরু
- $: লাইনের শেষ
উদাহরণ:
sed '/^apple/s/apple/fruit/' file.txtএটি
file.txtফাইলে এমন লাইনগুলোর মধ্যে "apple"-কে "fruit"-এ প্রতিস্থাপন করবে যা "apple" দিয়ে শুরু হয়।ব্যাকট্র্যাকিং (Lookahead/Lookbehind)
Sed এর মাধ্যমে আপনি lookahead এবং lookbehind (যা প্রথাগতভাবে "positive" বা "negative" হতে পারে) দিয়ে জটিল প্যাটার্ন ম্যাচ করতে পারেন। তবে, এই ফিচারটি Sed এ সরাসরি উপলব্ধ নয়, এবং Perl-Compatible Regular Expressions (PCRE) ব্যবহার করতে হয় যেগুলো
perlবাgrep -Pএ পাওয়া যায়। Sed নিজে এই ধরনের ফিচার সমর্থন করে না।
Complex Patterns এর Sed Example
Example 1: একাধিক শব্দের মধ্যে Match
ফাইলের মধ্যে এমন লাইন খুঁজুন যেখানে "apple" এবং "banana" দুটো শব্দ একসাথে আছে এবং তাদের প্রতিস্থাপন করুন:
sed 's/apple.*banana/fruit salad/' file.txtএটি "apple" থেকে "banana" পর্যন্ত সব কিছু "fruit salad"-এ প্রতিস্থাপন করবে।
Example 2: ভিন্ন কেসে Match
যেকোনো কেসে "cat" শব্দের পরিবর্তে "animal" লিখুন:
sed 's/cat/animal/I' file.txtExample 3: কেস ইনসেনসিটিভ Replacement
"apple", "Apple", "APPLE" ইত্যাদি যেকোনো কেসে "fruit" দিয়ে প্রতিস্থাপন:
sed 's/apple/fruit/I' file.txtসারাংশ
Sed এ complex patterns এবং matching techniques ব্যবহার করে আপনি খুবই শক্তিশালী টেক্সট পরিবর্তন করতে পারেন। Regular expressions এর মাধ্যমে আপনি প্যাটার্ন matching এবং replacement এর জন্য সহজেই advanced text manipulation করতে পারেন। Sed এর regex সাপোর্টিং ক্ষমতা আপনাকে বড়, ছোট, সংখ্যা, বিশেষ ক্যারেক্টার এবং আরও অনেক কিছু সনাক্ত করে তাদের সাথে জটিল পরিবর্তন করতে সাহায্য করে।
Read more