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), কেস ইনসেন্সিটিভ, রেগুলার এক্সপ্রেশন ব্যবহার এবং ইন-প্লেস পরিবর্তন করার মতো ফিচার ব্যবহার করতে পারেন, যা খুবই কার্যকর এবং দ্রুত।
Read more