Sed (Stream Editor) এর -i (in-place) ফ্ল্যাগ ব্যবহার করে আপনি একটি ফাইলের মধ্যে সরাসরি পরিবর্তন (modification) করতে পারেন। এই ফ্ল্যাগটি ব্যবহার করলে Sed ফাইলের মধ্যে পরিবর্তনগুলো স্থায়ীভাবে সেভ করে ফেলবে, অর্থাৎ নতুন ফাইল তৈরি না করে একই ফাইলে টেক্সট পরিবর্তন করা হবে।
-i ফ্ল্যাগের ব্যবহার
-i ফ্ল্যাগ Sed কমান্ডের সাথে ব্যবহার করলে আপনি যে ফাইলটিতে পরিবর্তন করতে চান, সেই ফাইলটি সরাসরি আপডেট হবে। এই ফ্ল্যাগের মাধ্যমে, আপনি প্যাটার্ন অনুযায়ী যেকোনো পরিবর্তন করার পরে তা অটোমেটিক্যালি ফাইলে সেভ হবে। এটি খুবই উপকারী যখন আপনাকে বড় ফাইলগুলিতে পরিবর্তন করতে হয় এবং আপনি নতুন ফাইল তৈরি করতে না চান।
সিনট্যাক্স:
sed -i 'command' file.txtএখানে:
-i: in-place পরিবর্তন করার জন্য ব্যবহৃত ফ্ল্যাগ।command: Sed কমান্ড যা আপনি ফাইলের মধ্যে প্রয়োগ করতে চান (যেমন,s/old/new/gবাd)।file.txt: যে ফাইলটিতে পরিবর্তন করা হবে।
-i ফ্ল্যাগের উদাহরণ
1. কোনো শব্দের প্রতিস্থাপন (Substitution) করা
ধরা যাক, আপনি file.txt ফাইলের মধ্যে "cat" শব্দটি "dog"-এ প্রতিস্থাপন করতে চান এবং পরিবর্তন সরাসরি ফাইলে সেভ করতে চান:
sed -i 's/cat/dog/g' file.txtএটি:
s/cat/dog/g: ফাইলের সমস্ত "cat" শব্দকে "dog"-এ পরিবর্তন করবে।-i: পরিবর্তনগুলো সরাসরি ফাইলে সেভ হবে।
2. কোনো লাইন মুছে ফেলা (Deleting Lines)
ধরা যাক, আপনি file.txt ফাইলের দ্বিতীয় লাইনটি মুছে ফেলতে চান এবং পরিবর্তন সরাসরি ফাইলে সেভ করতে চান:
sed -i '2d' file.txtএটি:
2d: দ্বিতীয় লাইনটি মুছে ফেলবে।-i: পরিবর্তনগুলো সরাসরি ফাইলে সেভ হবে।
3. নতুন লাইন যোগ করা
আপনি যদি file.txt ফাইলে দ্বিতীয় লাইনের পরে একটি নতুন লাইন যোগ করতে চান:
sed -i '2a This is a new line' file.txtএটি:
2a: দ্বিতীয় লাইনের পরে একটি নতুন লাইন যোগ করবে।-i: পরিবর্তনগুলো সরাসরি ফাইলে সেভ হবে।
4. একাধিক পরিবর্তন (Multiple Changes)
ধরা যাক, আপনি একটি ফাইলে একাধিক পরিবর্তন করতে চান, যেমন প্রথমে "cat" শব্দটি "dog"-এ এবং তারপর "fish" শব্দটি "shark"-এ পরিবর্তন করতে চান:
sed -i -e 's/cat/dog/g' -e 's/fish/shark/g' file.txtএটি:
-e 's/cat/dog/g': "cat" শব্দটি "dog"-এ পরিবর্তন করবে।-e 's/fish/shark/g': "fish" শব্দটি "shark"-এ পরিবর্তন করবে।-i: পরিবর্তনগুলো সরাসরি ফাইলে সেভ হবে।
5. Back Up with -i
কখনও কখনও আপনি ফাইলের পরিবর্তন করার আগে backup রাখতে চাইতে পারেন। -i ফ্ল্যাগের সাথে একটি এক্সটেনশন দিলে Sed সেই ফাইলের একটি ব্যাকআপ কপি তৈরি করবে। যেমন, আপনি যদি .bak এক্সটেনশনের সাথে ব্যাকআপ তৈরি করতে চান:
sed -i.bak 's/cat/dog/g' file.txtএটি:
.bak: একটি ব্যাকআপ ফাইল তৈরি করবে, যেমনfile.txt.bak।-i: পরিবর্তনগুলো সরাসরি মূল ফাইলে সেভ হবে।
6. বিভিন্ন ফাইলের মধ্যে একই পরিবর্তন করা
আপনি যদি একাধিক ফাইলে একই পরিবর্তন করতে চান, তবে একটি লুপের মাধ্যমে এটি করা যেতে পারে। উদাহরণস্বরূপ, সমস্ত .txt ফাইলে "apple" শব্দটি "orange"-এ পরিবর্তন করতে:
for file in *.txt; do
sed -i 's/apple/orange/g' "$file"
doneএটি:
- সমস্ত
.txtফাইলের মধ্যে "apple" শব্দটি "orange"-এ পরিবর্তন করবে।
কিছু গুরুত্বপূর্ণ টিপস
-iফ্ল্যাগ সতর্কভাবে ব্যবহার করুন: কারণ এটি ফাইলের মধ্যে সরাসরি পরিবর্তন করে, অতএব ফাইলের মুছে যাওয়া বা পরিবর্তিত অংশ আবার পুনরুদ্ধার করা সম্ভব নয়, যদি না আপনি ব্যাকআপ না রাখেন।- ব্যাকআপ ফাইল ব্যবহার করুন:
-iফ্ল্যাগের সাথে.bakএক্সটেনশন ব্যবহার করে আপনি ফাইলের একটি ব্যাকআপ তৈরি করতে পারেন, যাতে মূল ফাইলের কোনো ভুল পরিবর্তন হলে আপনি সহজেই তা পুনরুদ্ধার করতে পারেন।
Conclusion
Sed-এ -i (in-place) ফ্ল্যাগ ব্যবহার করে আপনি একটি ফাইলের মধ্যে সরাসরি পরিবর্তন করতে পারেন। এটি বিশেষভাবে উপকারী যখন আপনাকে কোনও ফাইলে দ্রুত পরিবর্তন করতে হয় এবং নতুন ফাইল তৈরি না করে পুরনো ফাইলেই পরিবর্তন রাখতে হয়। তবে, -i ফ্ল্যাগ ব্যবহার করার আগে অবশ্যই ব্যাকআপ রাখতে ভুলবেন না, যাতে কোনো অপ্রত্যাশিত পরিবর্তন হলে তা পুনরুদ্ধার করা যায়।
Read more