Text Substitution (টেক্সট প্রতিস্থাপন) হল একটি সাধারণ এবং গুরুত্বপূর্ণ অপারেশন যা টেক্সট ম্যানিপুলেশন এবং ডেটা প্রক্রিয়াকরণে ব্যাপকভাবে ব্যবহৃত হয়। Sed (Stream Editor) ব্যবহার করে টেক্সট ফাইলে দ্রুত এবং কার্যকরভাবে নির্দিষ্ট প্যাটার্নের প্রতিস্থাপন করা সম্ভব।
Text Substitution in Sed (Sed তে টেক্সট প্রতিস্থাপন)
Sed এর s কমান্ডটি টেক্সট ফাইলে প্রতিস্থাপন বা সলিউশন করার জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি একটি নির্দিষ্ট টেক্সট প্যাটার্ন খুঁজে সেটি অন্য একটি টেক্সট দিয়ে প্রতিস্থাপন করতে পারেন।
Sed Text Substitution Syntax
সিনট্যাক্স:
sed 's/pattern/replacement/' file.txtএখানে:
s: সাবস্টিটিউট (সাবস্টিটিউশন বা প্রতিস্থাপন) নির্দেশ করে।pattern: খুঁজে বের করা হবে এমন টেক্সট বা প্যাটার্ন।replacement: প্যাটার্নের জায়গায় প্রতিস্থাপন করা হবে এমন নতুন টেক্সট।file.txt: টেক্সট ফাইল যেখানে প্রতিস্থাপনটি করা হবে।
Text Substitution এর উদাহরণসমূহ
একটি শব্দ প্রতিস্থাপন:
যদি আপনি একটি ফাইলে "cat" শব্দটি "dog"-এ পরিবর্তন করতে চান, তাহলে কমান্ড হবে:কমান্ড:
sed 's/cat/dog/' file.txtব্যাখ্যা: এই কমান্ডটি
file.txtফাইলে প্রথম "cat" শব্দটি "dog"-এ প্রতিস্থাপন করবে।সকল occurrences প্রতিস্থাপন (Global Replace):
যদি আপনি একই লাইন বা ফাইলের সব occurrences প্রতিস্থাপন করতে চান, তবেgফ্ল্যাগ ব্যবহার করতে হবে।কমান্ড:
sed 's/cat/dog/g' file.txtব্যাখ্যা: এই কমান্ডটি
file.txtফাইলে সব "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে।সীমিত occurrences প্রতিস্থাপন:
আপনি যদি শুধুমাত্র একটি নির্দিষ্ট সংখ্যক occurrences প্রতিস্থাপন করতে চান, তাহলেn(যেমন2) সংখ্যা ব্যবহার করতে পারেন।কমান্ড:
sed 's/cat/dog/2' file.txtব্যাখ্যা: এটি শুধুমাত্র দ্বিতীয় occurrence ("cat") কে "dog"-এ প্রতিস্থাপন করবে।
এমবেডেড স্ট্রিংয়ের পরিবর্তন:
যদি আপনি কোনো টেক্সটের মধ্যে নির্দিষ্ট একটি substring পরিবর্তন করতে চান, এটি করাও সম্ভব। উদাহরণস্বরূপ, "cat" শব্দটির পরবর্তী "dog" যোগ করা:কমান্ড:
sed 's/cat/& dog/' file.txtব্যাখ্যা: এই কমান্ডটি "cat" শব্দের পরে "dog" যোগ করবে, যেমন "cat dog"।
ইন-প্লেস প্রতিস্থাপন:
যদি আপনি সরাসরি ফাইলের মধ্যে পরিবর্তন করতে চান, তাহলে-iঅপশন ব্যবহার করতে হবে। এটি ফাইলের মধ্যে সরাসরি পরিবর্তন করে, নতুন ফাইল তৈরি করে না।কমান্ড:
sed -i 's/cat/dog/g' file.txtব্যাখ্যা: এটি
file.txtফাইলের সব "cat" শব্দকে "dog"-এ সরাসরি প্রতিস্থাপন করবে এবং সেভ করবে।লাইনের নির্দিষ্ট স্থানে প্রতিস্থাপন:
আপনি যদি শুধুমাত্র কোনো নির্দিষ্ট লাইনে বা প্যাটার্নে পরিবর্তন করতে চান, তাহলে সেই লাইন বা প্যাটার্নটি সুনির্দিষ্ট করতে হবে।কমান্ড:
sed '2s/cat/dog/' file.txtব্যাখ্যা: এটি
file.txtএর দ্বিতীয় লাইনে "cat" শব্দটি "dog"-এ প্রতিস্থাপন করবে।ব্যাকরেফারেন্স (Backreference) ব্যবহার:
আপনি যদি প্যাটার্নের অংশ ব্যবহার করতে চান, যেমন কোনো গ্রুপকে রেফারেন্স হিসাবে, তখন ব্যাকরেফারেন্স ব্যবহার করতে পারেন। এটি\1,\2ইত্যাদি ব্যবহার করে করা হয়।কমান্ড:
sed 's/\(cat\) is \1/' file.txtব্যাখ্যা: এটি "cat" শব্দের পরে "is" যোগ করবে, ফলস্বরূপ "cat is cat" হয়ে যাবে।
Sed এর Text Substitution এ কিছু গুরুত্বপূর্ণ অপশন
-n অপশন:
-nঅপশন ব্যবহার করলে Sed আউটপুট দেখাবে না, তবে আপনি যখন প্যাটার্ন ম্যাচিং চান তখনpকমান্ড ব্যবহার করে আউটপুট দেখাতে পারেন।কমান্ড:
sed -n 's/cat/dog/p' file.txtব্যাখ্যা: এটি শুধু সেই লাইনে পরিবর্তন করবে যেগুলো "cat" শব্দটি ধারণ করে এবং সেই লাইনে পরিবর্তিত টেক্সট প্রদর্শন করবে।
Multiple Substitutions (একাধিক প্রতিস্থাপন):
একাধিক প্রতিস্থাপন একসাথে করার জন্য-eঅপশন ব্যবহার করা হয়।কমান্ড:
sed -e 's/cat/dog/' -e 's/dog/bird/' file.txtব্যাখ্যা: এটি প্রথমে "cat" কে "dog"-এ এবং তারপর "dog" কে "bird"-এ প্রতিস্থাপন করবে।
সারাংশ:
Text Substitution বা টেক্সট প্রতিস্থাপন Sed এর একটি মৌলিক এবং গুরুত্বপূর্ণ কমান্ড যা টেক্সট ফাইলে কোনো নির্দিষ্ট প্যাটার্নকে অন্য একটি প্যাটার্ন দিয়ে প্রতিস্থাপন করতে ব্যবহৃত হয়। আপনি Sed দিয়ে একক প্রতিস্থাপন, গ্লোবাল রিপ্লেসমেন্ট, ইন-প্লেস পরিবর্তন, ব্যাকরেফারেন্স এবং নির্দিষ্ট লাইনে প্রতিস্থাপন সহ আরও অনেক কাজ করতে পারেন। Sed এর এই কমান্ডগুলো টেক্সট ম্যানিপুলেশন ও ফাইল প্রক্রিয়াকরণের জন্য খুবই কার্যকর।
Sed এর s (substitute) কমান্ড ব্যবহার করে আপনি একটি ফাইলে বা স্ট্রিমে টেক্সট প্রতিস্থাপন করতে পারেন। এটি একটি খুবই শক্তিশালী এবং সাধারণভাবে ব্যবহৃত কমান্ড, যা বিশেষভাবে search (খোঁজা) এবং replace (প্রতিস্থাপন) কাজের জন্য ব্যবহৃত হয়।
Substitute (s) কমান্ডের গঠন
sed 's/old_text/new_text/options' input-fileএখানে:
- old_text: যে টেক্সটটি আপনি খুঁজে বের করতে চান।
- new_text: যা দিয়ে আপনি পুরানো টেক্সট প্রতিস্থাপন করতে চান।
- options: অপশনাল, এখানে আপনি কিছু বিশেষ ফ্ল্যাগ যেমন
g(global) ব্যবহার করতে পারেন। - input-file: ফাইল যেখানে আপনি টেক্সট পরিবর্তন করতে চান।
s (substitute) কমান্ডের সাধারণ ব্যবহার
- একটি শব্দের প্রতিস্থাপন
এটি সবচেয়ে সাধারণ ব্যবহার, যেখানে আপনি একটি নির্দিষ্ট শব্দ খুঁজে সেটি প্রতিস্থাপন করবেন।
sed 's/cat/dog/' file.txtএখানে:
- cat: যেটি খোঁজা হবে।
- dog: এটি "cat"-এর স্থানে প্রতিস্থাপিত হবে।
- file.txt: যেখানে পরিবর্তন হবে।
এই কমান্ডটি file.txt ফাইলে প্রথম "cat" শব্দটি "dog"-এ পরিবর্তন করবে।
- গ্লোবাল রিপ্লেসমেন্ট (Global Replacement)
যদি আপনি একটি লাইনে সব occurrences পরিবর্তন করতে চান, তাহলে g ফ্ল্যাগ ব্যবহার করতে হবে।
sed 's/cat/dog/g' file.txtএটি ফাইলের সমস্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে।
- কেবলমাত্র প্রথম occurrence পরিবর্তন করা
ডিফল্টভাবে, s কমান্ড শুধুমাত্র লাইনের প্রথম occurrence পরিবর্তন করে। যদি আপনি শুধুমাত্র প্রথম "cat" শব্দটি প্রতিস্থাপন করতে চান, তবে এটি এমনভাবে কাজ করবে:
sed 's/cat/dog/' file.txtএটি শুধুমাত্র প্রথম "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে, এবং যদি সেই লাইনে আরো "cat" থাকে, সেগুলো অপরিবর্তিত থাকবে।
- রেগুলার এক্সপ্রেশন ব্যবহার করে প্রতিস্থাপন
Sed রেগুলার এক্সপ্রেশন (regex) সাপোর্ট করে, তাই আপনি জটিল প্যাটার্নও খুঁজে বের করে পরিবর্তন করতে পারেন।
sed 's/[0-9]/X/g' file.txtএটি file.txt থেকে সমস্ত ডিজিট (0-9) খুঁজে এবং সেগুলোর জায়গায় "X" বসিয়ে দিবে।
- লাইন শেষে টেক্সট যোগ করা
Sed এর s কমান্ড দিয়ে আপনি লাইনের শেষে টেক্সট যোগও করতে পারেন। উদাহরণস্বরূপ, যদি আপনি সমস্ত লাইনের শেষে "end" শব্দ যোগ করতে চান:
sed 's/$/ end/' file.txtএখানে:
$লাইনের শেষকে নির্দেশ করে।- " end" লাইনের শেষে যোগ করা হবে।
- টেক্সট প্রতিস্থাপন এবং ইন-প্লেস পরিবর্তন
Sed দিয়ে আপনি সরাসরি ফাইল পরিবর্তন করতে পারেন, যাতে নতুন ফাইল তৈরি না হয়। এজন্য -i অপশন ব্যবহার করা হয়।
sed -i 's/cat/dog/g' file.txtএটি file.txt ফাইলের সমস্ত "cat" শব্দকে "dog"-এ পরিবর্তন করবে এবং সরাসরি ফাইলের মধ্যে সেই পরিবর্তন সেভ করবে।
সংশোধিত কমান্ডের অপশনগুলি
g(global): সমস্ত occurrences প্রতিস্থাপন করতে।i(ignore case): প্যাটার্ন এবং প্রতিস্থাপন কেস ইন্সেন্সিটিভ করবে (অর্থাৎ বড়/ছোট হাতের অক্ষর ভিন্ন হবে না)।sed 's/cat/dog/gi' file.txtp(print): প্যাটার্ন ম্যাচ হলে শুধু সেই লাইনগুলো প্রিন্ট করবে।sed -n 's/cat/dog/p' file.txt
উদাহরণ
সকল "apple" শব্দকে "orange" দিয়ে প্রতিস্থাপন:
sed 's/apple/orange/g' fruits.txt"123" সংখ্যা খুঁজে "ABC" দিয়ে প্রতিস্থাপন:
sed 's/123/ABC/g' file.txtপ্যাটার্নের পর সাদা জায়গা যোগ করা:
sed 's/$/ /' file.txt
সারাংশ
sed 's/pattern/replacement/' কমান্ডটি টেক্সট পরিবর্তনের সবচেয়ে সাধারণ ও শক্তিশালী পদ্ধতি। এটি s কমান্ড দিয়ে টেক্সটের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে তার পরিবর্তে নতুন কিছু বসিয়ে দেয়। Sed এর s কমান্ডে আপনি গ্লোবাল পরিবর্তন (সব occurrences), কেস ইনসেন্সিটিভ, রেগুলার এক্সপ্রেশন ব্যবহার এবং ইন-প্লেস পরিবর্তন করার মতো ফিচার ব্যবহার করতে পারেন, যা খুবই কার্যকর এবং দ্রুত।
Sed (Stream Editor) একটি শক্তিশালী টুল যা টেক্সট ফাইল বা স্ট্রিমের মধ্যে সহজ এবং জটিল পরিবর্তন করতে ব্যবহৃত হয়। এর মধ্যে Simple Substitution (সরল প্রতিস্থাপন) এবং Global Substitution (গ্লোবাল প্রতিস্থাপন) দুটি গুরুত্বপূর্ণ অপারেশন রয়েছে, যা টেক্সট পরিবর্তন করার ক্ষেত্রে ব্যাপকভাবে ব্যবহৃত হয়।
1. Simple Substitution (সরল প্রতিস্থাপন)
Simple Substitution হল একটি টেক্সট ফাইলে একটি নির্দিষ্ট শব্দ বা প্যাটার্ন খুঁজে তাকে অন্য একটি শব্দ বা প্যাটার্ন দিয়ে প্রতিস্থাপন করার পদ্ধতি। এটি সবচেয়ে সাধারণ এবং মৌলিক Sed কমান্ড হিসেবে কাজ করে।
সিনট্যাক্স:
sed 's/old_text/new_text/' file.txtএখানে:
s: এটি substitution অপারেশন নির্দেশ করে, অর্থাৎ প্যাটার্নের পরিবর্তন করা।old_text: যে টেক্সটটি আপনি খুঁজতে চান এবং প্রতিস্থাপন করতে চান।new_text: যেটি আপনিold_textএর জায়গায় বসাতে চান।file.txt: যে ফাইলটি আপনি পরিবর্তন করতে চান।
উদাহরণ:
sed 's/cat/dog/' file.txtএই কমান্ডটি file.txt ফাইলে প্রথম "cat" শব্দটি খুঁজে তা "dog" দিয়ে প্রতিস্থাপন করবে। এটি শুধুমাত্র প্রথম ম্যাচিং টেক্সট পরিবর্তন করবে, পরবর্তী কোনো মিল পাওয়া যাবে না।
2. Global Substitution (গ্লোবাল প্রতিস্থাপন)
Global Substitution হল একে একে সমস্ত occurrences পরিবর্তন করার পদ্ধতি। এর মাধ্যমে, আপনি একটি লাইন বা পুরো ফাইলে যতবার সেই নির্দিষ্ট প্যাটার্নটি থাকবে, তা সবগুলোকে প্রতিস্থাপন করতে পারবেন। এর জন্য g ফ্ল্যাগ ব্যবহার করা হয়, যা global (বিশ্বব্যাপী) প্রতিস্থাপন নির্দেশ করে।
সিনট্যাক্স:
sed 's/old_text/new_text/g' file.txtএখানে:
g: এটি global নির্দেশক, যা বলে যে প্যাটার্নের সব occurrences পরিবর্তন করা হবে, প্রথমটির পরবর্তী গুলোও।
উদাহরণ:
sed 's/cat/dog/g' file.txtএই কমান্ডটি file.txt ফাইলে সব "cat" শব্দকে "dog" দিয়ে প্রতিস্থাপন করবে, এমনকি যদি "cat" শব্দটি একাধিক বার একই লাইনে থাকে, তাও।
Simple Substitution vs Global Substitution
- Simple Substitution: এটি একটি নির্দিষ্ট লাইনে প্রথম বার পাওয়া প্যাটার্নটিই শুধুমাত্র প্রতিস্থাপন করে।
- Global Substitution: এটি পুরো লাইনে বা পুরো ফাইলে যতবার ঐ প্যাটার্ন পাওয়া যাবে, সেগুলোকে সবগুলোকে প্রতিস্থাপন করে।
উদাহরণ 1: Simple Substitution
ধরা যাক, আপনার ফাইলে "apple" শব্দটি রয়েছে এবং আপনি প্রথম occurrence (প্রথমবার) শুধুমাত্র "orange" দিয়ে প্রতিস্থাপন করতে চান:
sed 's/apple/orange/' file.txtএটি প্রথম "apple" শব্দটি "orange" দিয়ে প্রতিস্থাপন করবে এবং পরবর্তী "apple" শব্দগুলো অপরিবর্তিত থাকবে।
উদাহরণ 2: Global Substitution
যদি আপনি একই কাজ করতে চান তবে গ্লোবাল ভাবে, অর্থাৎ, সব "apple" শব্দকে "orange" দিয়ে প্রতিস্থাপন করতে চান, তাহলে:
sed 's/apple/orange/g' file.txtএটি ফাইলের সব "apple" শব্দকে "orange"-এ পরিবর্তন করবে।
In-place Substitution (ইন-প্লেস প্রতিস্থাপন)
যদি আপনি ফাইলে সরাসরি পরিবর্তন করতে চান, তাহলে -i অপশন ব্যবহার করতে পারেন।
উদাহরণ:
sed -i 's/cat/dog/g' file.txtএটি file.txt ফাইলে সব "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে এবং তা সরাসরি সেভ করবে।
Conclusion
- Simple Substitution শুধুমাত্র প্রথম occurrence বা প্রথম প্যাটার্নের পরিবর্তন করে।
- Global Substitution ফাইলে বা লাইনে সব occurrences বা প্যাটার্নের পরিবর্তন করে।
- Global Substitution যখন ব্যবহৃত হয়, তখন
gফ্ল্যাগ ব্যবহার করা হয় যাতে একাধিক পরিবর্তন করা যায়।
Regular Expressions (রেগুলার এক্সপ্রেশন) হলো একটি বিশেষ ভাষা যা টেক্সট ডেটা খুঁজে বের করার, মেলানোর এবং পরিচালনা করার জন্য ব্যবহৃত হয়। এটি একটি শক্তিশালী টুল, যা বিশেষভাবে টেক্সট ফাইল বা স্ট্রিম থেকে নির্দিষ্ট প্যাটার্ন খুঁজে বের করতে এবং সেই প্যাটার্নগুলির সাথে কাজ করতে সাহায্য করে। Sed এবং অন্যান্য টুল যেমন grep, awk, ইত্যাদিতে রেগুলার এক্সপ্রেশন ব্যবহার করা হয়।
রেগুলার এক্সপ্রেশন সাধারণত একটি প্যাটার্ন বা মালিকানাধীন নিয়মের সেট যা নির্দিষ্ট টেক্সট বা ডেটার অংশ খুঁজে বের করতে ব্যবহৃত হয়। রেগুলার এক্সপ্রেশন দ্বারা আপনি টেক্সটের মধ্যে বেশ কিছু শক্তিশালী অনুসন্ধান এবং পরিবর্তন অপারেশন করতে পারেন।
Regular Expressions এর মৌলিক ধারণা
রেগুলার এক্সপ্রেশন সাধারণত কিছু বিশেষ চিহ্ন এবং নিয়মের সংমিশ্রণ যা টেক্সটের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে বের করে। কিছু গুরুত্বপূর্ণ রেগুলার এক্সপ্রেশন চিহ্ন ও তাদের অর্থ নিচে দেওয়া হলো:
1. বেসিক রেগুলার এক্সপ্রেশন চিহ্ন
. (Dot)
. চিহ্নটি যেকোনো একক অক্ষর বা ক্যারেক্টারকে মেলাতে ব্যবহার করা হয়। এটি যেকোনো একটি চরিত্রের সাথে মিলে যাবে।
উদাহরণ:
sed '/c.t/p' file.txtএটি file.txt ফাইলের যেসব লাইনে "c" এবং "t" এর মধ্যে কোনো একটি অক্ষর রয়েছে, সেগুলো প্রদর্শন করবে (যেমন "cat", "cot", "cut" ইত্যাদি)।
* (Asterisk)
* চিহ্নটি তার পূর্ববর্তী চরিত্রের শূন্য বা একাধিক পুনরাবৃত্তি মেলে।
উদাহরণ:
sed '/ca*t/p' file.txtএটি এমন লাইনগুলো প্রদর্শন করবে যেখানে "c" এর পরে "a" এর শূন্য বা একাধিক পুনরাবৃত্তি থাকবে, যেমন "ct", "cat", "caat" ইত্যাদি।
^ (Caret)
^ চিহ্নটি লাইনটির শুরুতে একটি প্যাটার্ন খুঁজে বের করতে ব্যবহৃত হয়।
উদাহরণ:
sed '/^cat/p' file.txtএটি file.txt ফাইলের প্রথমে "cat" দিয়ে শুরু হওয়া সমস্ত লাইনগুলো প্রদর্শন করবে।
$ (Dollar Sign)
$ চিহ্নটি লাইনটির শেষের প্যাটার্ন খুঁজে বের করতে ব্যবহৃত হয়।
উদাহরণ:
sed '/cat$/p' file.txtএটি file.txt ফাইলের যেসব লাইনে "cat" শব্দটি লাইনের শেষে রয়েছে, সেগুলো প্রদর্শন করবে।
[] (Square Brackets)
[] চিহ্নটি একটি নির্দিষ্ট সেটের মধ্যে থাকা যেকোনো একক অক্ষরের সাথে মিলিত হবে। এর মধ্যে যে কোন এক বা একাধিক চরিত্র হতে পারে।
উদাহরণ:
sed '/c[aeiou]t/p' file.txtএটি file.txt ফাইলের যেসব লাইনে "c" এবং "t" এর মধ্যে যেকোনো একক ভক্যাল অক্ষর রয়েছে, সেগুলো প্রদর্শন করবে (যেমন "cat", "cot", "cut" ইত্যাদি)।
[^] (Caret Inside Square Brackets)
[^] চিহ্নটি একটি প্যাটার্নে থাকা অক্ষর বাদ দিয়ে অন্য কিছু খুঁজে বের করতে ব্যবহৃত হয়। এর মধ্যে যে কোনো অক্ষর বাদ দিয়ে বাকি সব কিছু মেলে।
উদাহরণ:
sed '/c[^aeiou]t/p' file.txtএটি file.txt ফাইলের যেসব লাইনে "c" এবং "t" এর মধ্যে কোনো ভক্যাল অক্ষর ছাড়া অন্য কোনো অক্ষর রয়েছে, সেগুলো প্রদর্শন করবে (যেমন "c1t", "cxt" ইত্যাদি)।
2. বিশেষ চরিত্রসমূহ
\ (Backslash)
ব্যাকসল্যাশ \ চিহ্নটি বিশেষ চরিত্রকে এড়াতে ব্যবহৃত হয়। যেমন, যদি আপনি বিশেষ কোনো চরিত্র যেমন . বা * খুঁজতে চান, তাহলে সেই চরিত্রের আগে ব্যাকসল্যাশ দিতে হবে।
উদাহরণ:
sed '/\./p' file.txtএটি file.txt ফাইলের যেসব লাইনে "." চরিত্রটি রয়েছে, সেগুলো প্রদর্শন করবে।
{} (Curly Braces)
{} চিহ্নটি এক বা একাধিক পুনরাবৃত্তি সঠিকভাবে চিহ্নিত করতে ব্যবহৃত হয়। এটি কোনো শব্দ বা চরিত্র কতবার পুনরাবৃত্তি হতে পারে তা নির্দেশ করে।
উদাহরণ:
sed '/a\{3\}/p' file.txtএটি file.txt ফাইলের যেসব লাইনে "a" চরিত্রটি ৩ বার পুনরাবৃত্তি হয়েছে, সেগুলো প্রদর্শন করবে (যেমন "aaa")।
() (Parentheses)
() চিহ্নটি একটি গ্রুপ তৈরি করতে ব্যবহৃত হয়, যেটি নির্দিষ্ট অংশের মধ্যে মিল খোঁজার জন্য ব্যবহৃত হয়।
উদাহরণ:
sed '/\(cat\|dog\)/p' file.txtএটি file.txt ফাইলের যেসব লাইনে "cat" অথবা "dog" শব্দ রয়েছে, সেগুলো প্রদর্শন করবে।
3. Sed এ Regular Expressions এর ব্যবহার
Sed এর মাধ্যমে আপনি রেগুলার এক্সপ্রেশন ব্যবহার করে টেক্সটের মধ্যে মেলানো এবং পরিবর্তন করতে পারেন। এটি রেগুলার এক্সপ্রেশন সাপোর্ট করে, যা আপনাকে জটিল প্যাটার্ন এবং অনুসন্ধান করতে সাহায্য করে।
উদাহরণ 1:
sed '/^[aeiou]/p' file.txtএটি file.txt ফাইলের সমস্ত লাইন প্রদর্শন করবে যা ভক্যাল অক্ষরে শুরু হয়।
উদাহরণ 2:
sed 's/\([0-9]\{3\}\)/[\1]/g' file.txtএটি file.txt ফাইলের তিনটি ডিজিটের গ্রুপকে ব্র্যাকেট দিয়ে ঘিরে ফেলবে।
সারাংশ
রেগুলার এক্সপ্রেশন একটি অত্যন্ত শক্তিশালী টুল যা আপনাকে টেক্সট থেকে নির্দিষ্ট প্যাটার্ন খুঁজে বের করার এবং সেই প্যাটার্নের উপর কাজ করার সুযোগ দেয়। Sed-এ রেগুলার এক্সপ্রেশন ব্যবহার করে আপনি সহজে টেক্সট ফাইলের মধ্যে পরিবর্তন করতে পারেন, যেমন টেক্সট অনুসন্ধান, পরিবর্তন এবং মুছে ফেলা।
Sed (Stream Editor) এর case-insensitive substitution এবং replacement flags খুবই শক্তিশালী টুল হিসেবে ব্যবহৃত হয়। এগুলো আপনাকে টেক্সট ফাইলে প্যাটার্ন খুঁজে এবং প্রতিস্থাপন করতে সাহায্য করে, এবং case-insensitive প্রতিস্থাপন করলে আপনি বড় এবং ছোট হাতের অক্ষর নিয়ে চিন্তা না করেই কাজ করতে পারেন।
Case-Insensitive Substitution
Sed তে case-insensitive substitution করার জন্য I ফ্ল্যাগ ব্যবহার করা হয়। এর মাধ্যমে আপনি প্যাটার্নে বড় হাতের অক্ষর এবং ছোট হাতের অক্ষর আলাদা না করে একটি নির্দিষ্ট শব্দ বা প্যাটার্ন খুঁজে এবং প্রতিস্থাপন করতে পারবেন।
Case-Insensitive Substitution এর সিনট্যাক্স:
sed 's/old_text/new_text/I' file.txtএখানে:
s: সার্চ এবং রিপ্লেস অপারেশন নির্দেশ করে।old_text: আপনি যে প্যাটার্নটি খুঁজতে চান।new_text: পুরানো টেক্সটের পরিবর্তে নতুন টেক্সট যা প্রতিস্থাপন হবে।I: case-insensitive অপশন, যা বড় বা ছোট হাতের অক্ষর নিয়ে কোনো পার্থক্য করবে না।
উদাহরণ:
ধরা যাক, file.txt ফাইলে "apple" শব্দটি রয়েছে এবং আপনি এটিকে "fruit" দিয়ে প্রতিস্থাপন করতে চান, কিন্তু আপনি চাইছেন যে এটি "apple", "Apple", "APPLE", বা অন্যান্য কোনো ভিন্ন কেসেও পরিবর্তিত হোক।
ফাইলের কনটেন্ট (file.txt):
apple
Apple
APPLE
bananaকমান্ড:
sed 's/apple/fruit/I' file.txtআউটপুট:
fruit
fruit
fruit
bananaএখানে, I ফ্ল্যাগের কারণে "apple", "Apple", এবং "APPLE" সব ক্ষেত্রেই "fruit" দিয়ে প্রতিস্থাপন করা হয়েছে, যদিও তাদের কেস (বড় বা ছোট হাতের অক্ষর) আলাদা ছিল।
Replacement Flags in Sed
Sed তে replacement flags বা রিপ্লেসমেন্টের জন্য কিছু বিশেষ ফ্ল্যাগ ব্যবহার করা যায়, যা প্রতিস্থাপন বা টেক্সট পরিবর্তনের সময় অতিরিক্ত কার্যকারিতা যোগ করে।
g (global replacement):
gফ্ল্যাগ ব্যবহার করলে একটি লাইনে যতবার প্যাটার্ন মেলে, ততবার প্রতিস্থাপন করা হয়। যদিgনা ব্যবহার করা হয়, তাহলে শুধুমাত্র প্রথম ম্যাচটি প্রতিস্থাপন করা হয়।
উদাহরণ:
sed 's/apple/fruit/g' file.txtযদি
file.txtফাইলে একাধিক "apple" শব্দ থাকে, তবে সব occurrences পরিবর্তিত হবে।p (print matching lines):
pফ্ল্যাগ ব্যবহার করলে শুধু পরিবর্তিত লাইনগুলো প্রদর্শন করা হয়, মূল ফাইলটি পরিবর্তন করা হয় না। এটি সাধারণত-nঅপশনের সঙ্গে ব্যবহৃত হয়।
উদাহরণ:
sed -n 's/apple/fruit/p' file.txtএখানে,
-nঅপশনটি আউটপুট প্রিন্টিং বন্ধ রাখে, এবংpফ্ল্যাগের মাধ্যমে কেবলমাত্র যেগুলো পরিবর্তিত হয়েছে সেগুলো প্রদর্শিত হবে।w (write to file):
wফ্ল্যাগ দিয়ে আপনি Sed দ্বারা করা প্রতিস্থাপন বা পরিবর্তনকে একটি নতুন ফাইলে লেখতে পারেন। এই ফ্ল্যাগের মাধ্যমে আপনি কোনও ফাইলের মধ্যে টেক্সট পরিবর্তন করতে পারেন এবং তা অন্য একটি ফাইলে সেভ করতে পারেন।
উদাহরণ:
sed 's/apple/fruit/gw newfile.txt' file.txtএটি
file.txtফাইলের "apple" শব্দগুলোকে "fruit"-এ পরিবর্তন করবে এবং পরিবর্তিত ফাইলের কন্টেন্টnewfile.txtফাইলে সেভ করবে।& (the matched string):
&ফ্ল্যাগ ব্যবহার করে আপনি মেলা প্যাটার্নটি রিপ্লেসমেন্টে রেফারেন্স হিসেবে ব্যবহার করতে পারেন। এটি "matched string" অর্থাৎ যে অংশটি প্যাটার্নের সাথে মিলেছে, সেটিকে রিপ্লেসমেন্ট অংশে অন্তর্ভুক্ত করতে ব্যবহৃত হয়।
উদাহরণ:
sed 's/apple/& pie/g' file.txtএই কমান্ডটি
file.txtফাইলে "apple" শব্দটির সাথে " pie" যোগ করে, অর্থাৎ "apple" হয়ে যাবে "apple pie"।
সারাংশ
- Case-Insensitive Substitution: Sed এর
Iফ্ল্যাগ ব্যবহার করে আপনি টেক্সট ফাইলে বড় এবং ছোট হাতের অক্ষর নিয়ে চিন্তা না করে প্যাটার্ন খুঁজে প্রতিস্থাপন করতে পারেন। - Replacement Flags: Sed তে বিভিন্ন রিপ্লেসমেন্ট ফ্ল্যাগ যেমন
g,p,w, এবং&ব্যবহার করে আপনি আরও জটিল প্রতিস্থাপন এবং পরিবর্তন করতে পারেন, যেমন গ্লোবাল প্রতিস্থাপন, প্রিন্টিং বা ফাইলে লেখা ইত্যাদি।
Read more