Sed (Stream Editor) দিয়ে আপনি সহজেই ফাইলের সাথে কাজ করতে পারেন এবং টেক্সট ফাইলগুলিতে পরিবর্তন করতে পারেন। File Handling (ফাইল হ্যান্ডলিং) এবং Output Redirection (আউটপুট রিডাইরেকশন) Sed এর দুটি গুরুত্বপূর্ণ ফিচার যা আপনাকে ফাইলের মধ্যে ইনপুট ও আউটপুট প্রক্রিয়া করতে সহায়তা করে।
1. File Handling in Sed (ফাইল হ্যান্ডলিং)
File Handling বা ফাইলের সাথে কাজ করা Sed এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা আপনাকে ফাইলের মধ্যে থাকা ডেটার উপর বিভিন্ন ধরনের কার্য সম্পাদন করতে সাহায্য করে। Sed ব্যবহার করে আপনি একটি ফাইলের মধ্যে টেক্সট পরিবর্তন, সংযোজন বা মুছে ফেলা সহ বিভিন্ন কাজ করতে পারেন।
File Handling with Sed
Sed এর মাধ্যমে ফাইল হ্যান্ডলিং করার জন্য ইনপুট ফাইল উল্লেখ করতে হয় এবং প্রক্রিয়া করা ডেটা সরাসরি আউটপুটে প্রদান করা হয়। আপনি ফাইলের মধ্যে সরাসরি পরিবর্তন করতে চাইলে in-place editing এর জন্য -i অপশন ব্যবহার করতে পারেন।
Syntax for File Handling (ফাইল হ্যান্ডলিং সিনট্যাক্স)
সিনট্যাক্স:
sed 'command' file.txtএখানে:
- command: যে Sed কমান্ডটি ফাইলে প্রয়োগ করতে চান।
- file.txt: ফাইলের নাম যেখানে Sed কমান্ডটি প্রয়োগ হবে।
File Handling Example (ফাইল হ্যান্ডলিং উদাহরণ)
ফাইলের মধ্যে টেক্সট প্রতিস্থাপন (Text Substitution):
আপনি একটি ফাইলে "cat" শব্দকে "dog"-এ প্রতিস্থাপন করতে পারেন।কমান্ড:
sed 's/cat/dog/' file.txtব্যাখ্যা: এটি
file.txtফাইলের প্রথম occurrence "cat"-কে "dog"-এ প্রতিস্থাপন করবে।ফাইলের মধ্যে সরাসরি পরিবর্তন (In-Place Editing):
আপনি ফাইলের মধ্যে সরাসরি পরিবর্তন করতে-iঅপশন ব্যবহার করতে পারেন।কমান্ড:
sed -i 's/cat/dog/g' file.txtব্যাখ্যা: এটি
file.txtফাইলের সমস্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে এবং সরাসরি ফাইলে সেই পরিবর্তনটি সেভ করবে।ফাইলের লাইন মুছে ফেলা (Delete Lines in a File):
একটি ফাইলে নির্দিষ্ট লাইন মুছে ফেলতে আপনিdকমান্ড ব্যবহার করতে পারেন।কমান্ড:
sed '2d' file.txtব্যাখ্যা: এটি
file.txtফাইলের দ্বিতীয় লাইন মুছে ফেলবে।ফাইলের লাইন যোগ করা (Add Lines in a File):
আপনি একটি ফাইলে নির্দিষ্ট লাইনের আগে বা পরে নতুন লাইন যোগ করতে পারেন।কমান্ড:
sed '2a This is a new line' file.txtব্যাখ্যা: এটি
file.txtফাইলের দ্বিতীয় লাইনের পরে "This is a new line" যোগ করবে।
2. Output Redirection (আউটপুট রিডাইরেকশন)
Output Redirection হল একটি প্রক্রিয়া যেখানে আপনি একটি কমান্ডের আউটপুটকে একটি ফাইলে পাঠাতে পারেন, সাধারণত আউটপুটটি সরাসরি স্ক্রীনে দেখানোর পরিবর্তে। Sed এর মাধ্যমে আপনি আউটপুট রিডাইরেকশন ব্যবহার করে প্রক্রিয়া করা ডেটা নতুন একটি ফাইলে সংরক্ষণ করতে পারেন অথবা বিদ্যমান ফাইলের মধ্যে আপডেট করতে পারেন।
Output Redirection Syntax (আউটপুট রিডাইরেকশন সিনট্যাক্স)
সিনট্যাক্স:
sed 'command' file.txt > output.txtএখানে:
- command: যে Sed কমান্ডটি আপনি প্রয়োগ করতে চান।
- file.txt: ইনপুট ফাইল।
- >: আউটপুট রিডাইরেকশন অপারেটর।
- output.txt: যে ফাইলটিতে আউটপুট সংরক্ষণ করতে চান।
Output Redirection Example (আউটপুট রিডাইরেকশন উদাহরণ)
ফাইলের আউটপুট নতুন ফাইলে সংরক্ষণ (Redirect output to a new file):
আপনি যদিfile.txtফাইলের সমস্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপন করে তার আউটপুট নতুন একটি ফাইলে সংরক্ষণ করতে চান, তাহলে:কমান্ড:
sed 's/cat/dog/g' file.txt > output.txtব্যাখ্যা: এটি
file.txtফাইলের সমস্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে এবং আউটপুট output.txt ফাইলে সংরক্ষণ করবে।আউটপুট ফাইলের মধ্যে সংযোজন (Append output to a file):
আপনি যদি একটি ফাইলে নতুন তথ্য সংযুক্ত করতে চান (অথবা আউটপুট যোগ করতে চান), তবে আপনি>>ব্যবহার করতে পারেন।কমান্ড:
sed 's/cat/dog/g' file.txt >> output.txtব্যাখ্যা: এটি
file.txtফাইলের সমস্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে এবং আউটপুট output.txt ফাইলে যোগ করবে (যদি ফাইলটি আগে থেকে থাকে তবে নতুন তথ্য যোগ হবে)।আউটপুটকে স্ক্রীনে প্রদর্শন (Display output on the screen):
যদি আপনি আউটপুটটি স্ক্রীনে দেখতে চান, তবে আউটপুট রিডাইরেকশন ব্যবহার করতে হবে না, কারণ Sed স্বাভাবিকভাবেই আউটপুট প্রদর্শন করে। তবে, আপনি যদি স্ক্রীনে প্রদর্শন করতে চান এবং কোনও ফাইলের পরিবর্তন করতে না চান, তাহলে:কমান্ড:
sed 's/cat/dog/g' file.txtব্যাখ্যা: এটি স্ক্রীনে
file.txtফাইলের সমস্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপিত আউটপুট দেখাবে।
3. Combining File Handling and Output Redirection (ফাইল হ্যান্ডলিং এবং আউটপুট রিডাইরেকশন একসাথে ব্যবহার করা)
এটি Sed এর সবচেয়ে শক্তিশালী বৈশিষ্ট্যগুলির মধ্যে একটি, যেখানে আপনি একসাথে ফাইল হ্যান্ডলিং এবং আউটপুট রিডাইরেকশন ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
In-place Editing and Output Redirection (ইন-প্লেস এডিটিং এবং আউটপুট রিডাইরেকশন):
sed -i 's/cat/dog/g' file.txtএটি file.txt ফাইলে সরাসরি সমস্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে এবং ফাইলটিতে সেই পরিবর্তন সেভ করবে।
Read from One File and Write to Another (একটি ফাইল থেকে পড়া এবং অন্য ফাইলে লেখা):
sed 's/cat/dog/g' file.txt > newfile.txtএটি file.txt ফাইল থেকে "cat" শব্দটি "dog"-এ প্রতিস্থাপন করবে এবং আউটপুট newfile.txt ফাইলে সংরক্ষণ করবে।
সারাংশ
File Handling এবং Output Redirection হল Sed এর অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য যা আপনাকে ফাইলের মধ্যে কাজ করতে এবং আউটপুট সহজে পরিচালনা করতে সহায়তা করে। File Handling এর মাধ্যমে আপনি ফাইলের মধ্যে পরিবর্তন করতে পারেন, এবং Output Redirection এর মাধ্যমে আপনি Sed কমান্ডের আউটপুটকে স্ক্রীনে দেখাতে পারেন বা অন্য কোনো ফাইলে সংরক্ষণ করতে পারেন। এগুলোর মাধ্যমে আপনি টেক্সট প্রক্রিয়াকরণ এবং ফাইল ম্যানিপুলেশনকে আরও সহজ এবং দ্রুত করতে পারেন।
Sed (Stream Editor) ব্যবহার করে ইনপুট ফাইল থেকে ডেটা পড়া এবং টেক্সট ম্যানিপুলেশন করা একটি সাধারণ প্রক্রিয়া। আপনি যেকোনো টেক্সট ফাইলের মধ্যে তথ্য পরিবর্তন, ফিল্টারিং, বা বিশ্লেষণ করতে Sed ব্যবহার করতে পারেন। এখানে input files থেকে ডেটা পড়ার বিভিন্ন উপায় এবং উদাহরণ আলোচনা করা হয়েছে।
Sed দিয়ে Input Files থেকে ডেটা পড়া
Sed সাধারণত standard input (stdin) থেকে ডেটা গ্রহণ করে, কিন্তু আপনি একটি টেক্সট ফাইলকে ইনপুট হিসেবে ব্যবহার করতে পারেন। Sed কমান্ড রান করার সময় input file নির্দিষ্ট করতে পারেন।
সাধারণ সিনট্যাক্স:
sed 'command' input-fileএখানে:
command: Sed কমান্ড যা ফাইলের মধ্যে কার্যকর হবে (যেমন, সার্চ, রিপ্লেস, ডিলিট ইত্যাদি)।input-file: যে ফাইল থেকে ডেটা পড়তে চান।
Sed দিয়ে Input File থেকে ডেটা পড়ার উদাহরণ
1. Input File থেকে ডেটা পড়া এবং সরাসরি আউটপুট দেখানো
ধরা যাক, আপনি file.txt নামক একটি ফাইল থেকে ডেটা পড়তে চান এবং সেই ডেটা আউটপুটে দেখতে চান।
sed '' file.txtএটি file.txt এর সমস্ত কনটেন্টকে আউটপুটে প্রদর্শন করবে, তবে কোনো পরিবর্তন হবে না।
2. নির্দিষ্ট প্যাটার্ন অনুসারে ডেটা পড়া
যদি আপনি ফাইল থেকে শুধুমাত্র একটি নির্দিষ্ট প্যাটার্নের সাথে মেলানো লাইনগুলো দেখতে চান, তাহলে আপনি Sed এর প্যাটার্ন মেলানোর ফিচার ব্যবহার করতে পারেন।
sed -n '/pattern/p' file.txtএটি file.txt থেকে সেই সমস্ত লাইন প্রদর্শন করবে যেগুলির মধ্যে pattern রয়েছে। -n অপশন Sed কে নির্দেশ করে যে, আউটপুট শুধুমাত্র নির্দিষ্ট প্যাটার্নের সাথে মেলানো লাইনগুলোই দেখাবে।
3. ফাইলের মধ্যে একটি নির্দিষ্ট শব্দ প্রতিস্থাপন করা
ধরা যাক, আপনি file.txt ফাইলের মধ্যে "apple" শব্দটিকে "banana"-এ প্রতিস্থাপন করতে চান:
sed 's/apple/banana/g' file.txtএটি file.txt ফাইলে সব "apple" শব্দকে "banana"-এ প্রতিস্থাপন করবে এবং আউটপুটে দেখাবে (ফাইলটি পরিবর্তন না করে)।
4. লেখার প্যাটার্ন দিয়ে তথ্য পরিবর্তন করা
এখন, যদি আপনি ফাইল থেকে একটি নির্দিষ্ট লাইন মুছে ফেলতে চান, আপনি d (delete) কমান্ড ব্যবহার করতে পারেন:
sed '/pattern/d' file.txtএটি file.txt ফাইল থেকে pattern প্যাটার্নের সাথে মেলা সব লাইন মুছে ফেলবে এবং বাকি লাইনগুলো আউটপুটে দেখাবে।
5. Input File থেকে নতুন লাইন যোগ করা
ধরা যাক, আপনি একটি টেক্সট ফাইলের শেষে একটি নতুন লাইন যোগ করতে চান:
sed '$a New line added' file.txtএটি file.txt ফাইলের শেষে "New line added" যোগ করবে এবং আউটপুট দেখাবে।
6. ইনপুট ফাইলে পরিবর্তন করা (In-place Editing)
যদি আপনি ফাইলের মধ্যে সরাসরি পরিবর্তন করতে চান, তাহলে -i (in-place) অপশন ব্যবহার করতে পারেন:
sed -i 's/apple/banana/g' file.txtএটি file.txt ফাইলে "apple" শব্দকে "banana"-এ প্রতিস্থাপন করবে এবং পরিবর্তনটি ফাইলে সেভ করবে।
7. একাধিক কমান্ড দিয়ে Input File থেকে ডেটা পড়া
আপনি একাধিক Sed কমান্ড একসাথে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, প্রথমে একটি শব্দ পরিবর্তন করা, তারপর একটি লাইন মুছে ফেলা:
sed -e 's/apple/banana/g' -e '/orange/d' file.txtএটি:
s/apple/banana/g: "apple" শব্দকে "banana"-এ প্রতিস্থাপন করবে।/orange/d: "orange" শব্দযুক্ত সব লাইন মুছে ফেলবে।
8. ফাইলের কয়েকটি লাইনকে ম্যানিপুলেট করা
ধরা যাক, আপনি একটি ফাইলের প্রথম তিনটি লাইন মুছে ফেলতে চান:
sed '1,3d' file.txtএটি file.txt ফাইলের প্রথম থেকে তৃতীয় লাইন মুছে ফেলবে।
Conclusion
- Sed এর মাধ্যমে ইনপুট ফাইল থেকে ডেটা পড়া এবং সেই ডেটার উপর পরিবর্তন করা খুবই সহজ। আপনি বিভিন্ন কমান্ড এবং অপশন ব্যবহার করে ফাইল থেকে নির্দিষ্ট ডেটা পড়তে, ম্যানিপুলেট করতে এবং পরিবর্তন করতে পারেন।
-nঅপশন ব্যবহার করলে শুধুমাত্র নির্দিষ্ট প্যাটার্ন মেলানো লাইনগুলো আউটপুটে দেখানো হবে।-iঅপশন ব্যবহার করে আপনি ফাইলের মধ্যে সরাসরি পরিবর্তন করতে পারেন।
Sed (Stream Editor) ব্যবহার করে আপনি Output Redirect করতে পারেন এবং ফাইল ম্যানিপুলেশন করতে পারেন। এটি টেক্সট প্রক্রিয়াকরণের জন্য অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি টেক্সট ফাইলের মধ্যে পরিবর্তন করে সেই পরিবর্তনগুলো সরাসরি আউটপুট করতে চান অথবা অন্য ফাইলে সেভ করতে চান।
1. Output Redirect (আউটপুট রিডিরেকশন)
Sed এর মাধ্যমে আউটপুটকে একটি নতুন ফাইলে বা একটি নির্দিষ্ট স্থানান্তরের জন্য output redirect করা হয়। আপনি সাধারণত > বা >> অপশন ব্যবহার করেন আউটপুট রিডিরেক্ট করতে। এর মাধ্যমে আপনি একটি ফাইলের পরিবর্তিত ডেটা বা আউটপুট অন্য একটি ফাইলে রাখতে পারেন।
সিনট্যাক্স:
sed 'command' file.txt > output.txtএখানে:
command: Sed কমান্ড যা আপনি ফাইলে প্রয়োগ করতে চান।file.txt: ইনপুট ফাইল যেটি আপনি পরিবর্তন করতে চান।> output.txt: আউটপুট রিডিরেকশন, এটি পরিবর্তিত ডেটা output.txt ফাইলে সেভ করবে।
উদাহরণ 1: Sed এর আউটপুট নতুন ফাইলে রিডিরেক্ট করা
যদি আপনি file.txt ফাইলের মধ্যে "cat" শব্দকে "dog" দিয়ে প্রতিস্থাপন করতে চান এবং তার আউটপুট output.txt ফাইলে রাখতে চান, তাহলে:
sed 's/cat/dog/g' file.txt > output.txtএটি file.txt ফাইলে "cat" শব্দগুলোকে "dog"-এ প্রতিস্থাপন করে, এবং ফলস্বরূপ output.txt ফাইলে সেভ করবে।
উদাহরণ 2: একাধিক Sed কমান্ড ব্যবহার করে আউটপুট রিডিরেক্ট করা
আপনি একাধিক Sed কমান্ড ব্যবহার করে একই আউটপুট ফাইলে পরিবর্তন করতে পারেন:
sed -e 's/cat/dog/g' -e 's/bat/rat/g' file.txt > output.txtএটি file.txt ফাইল থেকে "cat" শব্দগুলোকে "dog"-এ এবং "bat" শব্দগুলোকে "rat"-এ প্রতিস্থাপন করবে এবং তা output.txt ফাইলে সেভ করবে।
উদাহরণ 3: আউটপুট অ্যাপেন্ড করা (Append)
যদি আপনি আউটপুটকে একটি বিদ্যমান ফাইলে যোগ করতে চান (নতুনভাবে লেখার পরিবর্তে), তাহলে >> অপশন ব্যবহার করতে হবে:
sed 's/cat/dog/g' file.txt >> existing_file.txtএটি file.txt ফাইলে "cat" শব্দগুলোকে "dog"-এ প্রতিস্থাপন করবে এবং existing_file.txt ফাইলের শেষে তা যোগ করবে।
2. ফাইল ম্যানিপুলেশন
Sed ফাইল ম্যানিপুলেশন করার জন্য বিভিন্ন কার্যক্রমের জন্য ব্যবহৃত হয়, যেমন:
- ফাইলের মধ্যে লাইনের পরিবর্তন
- নতুন লাইন যোগ করা
- নির্দিষ্ট প্যাটার্নের সাথে মিল পাওয়া লাইন মুছে ফেলা
- ইন-প্লেস ফাইল পরিবর্তন
In-place File Editing (ইন-প্লেস ফাইল পরিবর্তন)
Sed এর সাহায্যে আপনি সরাসরি ফাইলের মধ্যে পরিবর্তন করতে পারেন, যাতে আপনি আউটপুট রিডিরেক্ট না করেও ফাইলটি পরিবর্তন করতে পারবেন। এটি -i (in-place) অপশন ব্যবহার করে করা হয়।
সিনট্যাক্স:
sed -i 'command' file.txtএখানে:
-i: ইন-প্লেস পরিবর্তনের জন্য ব্যবহার হয়, অর্থাৎ ফাইলটি সরাসরি পরিবর্তন হবে।command: Sed কমান্ড যা আপনি ফাইলে প্রয়োগ করতে চান।file.txt: ইনপুট ফাইল যেটি আপনি পরিবর্তন করতে চান।
উদাহরণ 4: ইন-প্লেস ফাইল পরিবর্তন করা
ধরা যাক, আপনি file.txt ফাইলের মধ্যে "cat" শব্দগুলোকে "dog"-এ সরাসরি পরিবর্তন করতে চান:
sed -i 's/cat/dog/g' file.txtএটি file.txt ফাইলে সমস্ত "cat" শব্দগুলোকে "dog"-এ প্রতিস্থাপন করবে এবং তা সরাসরি সেভ করবে।
In-place Editing with Backup (ব্যাকআপ তৈরি করা)
যদি আপনি ফাইলের ইন-প্লেস পরিবর্তন করার সময় একটি ব্যাকআপ রাখতে চান, তবে -i অপশনের পরে ব্যাকআপ ফাইলের এক্সটেনশন যোগ করতে পারেন:
sed -i.bak 's/cat/dog/g' file.txtএটি file.txt ফাইলের পরিবর্তন করার আগে একটি file.txt.bak ব্যাকআপ ফাইল তৈরি করবে।
3. ফাইলের মধ্যে প্যাটার্ন মুছে ফেলা (File Manipulation with Pattern Deletion)
Sed ব্যবহার করে আপনি ফাইলের মধ্যে নির্দিষ্ট প্যাটার্ন অনুযায়ী লাইন মুছে ফেলতে পারেন। এর জন্য d (delete) কমান্ড ব্যবহার হয়।
উদাহরণ 5: নির্দিষ্ট প্যাটার্নের সাথে লাইন মুছে ফেলা
ধরা যাক, আপনি file.txt ফাইল থেকে "cat" শব্দযুক্ত সমস্ত লাইন মুছে ফেলতে চান:
sed -i '/cat/d' file.txtএটি file.txt ফাইলে "cat" শব্দযুক্ত সমস্ত লাইন মুছে ফেলবে এবং তা সরাসরি সেভ করবে।
4. ফাইলের মধ্যে নতুন লাইন যোগ করা (File Manipulation with Appending)
Sed ব্যবহার করে আপনি একটি ফাইলে নতুন লাইনও যোগ করতে পারেন, বিশেষত যখন আপনি কোনও নির্দিষ্ট লাইনের পরে নতুন কিছু যোগ করতে চান।
উদাহরণ 6: একটি নির্দিষ্ট লাইনের পরে নতুন লাইন যোগ করা
ধরা যাক, আপনি file.txt ফাইলের দ্বিতীয় লাইনের পরে একটি নতুন লাইন যোগ করতে চান:
sed -i '2a This is a new line' file.txtএটি file.txt এর দ্বিতীয় লাইনের পরে "This is a new line" যোগ করবে এবং তা সরাসরি সেভ করবে।
Conclusion
- Output Redirect: আপনি Sed এর মাধ্যমে আউটপুট রিডিরেক্ট করতে পারেন
>(overwrite) বা>>(append) ব্যবহার করে, যা টেক্সট প্রক্রিয়া এবং আউটপুট সেভ করার জন্য সহায়ক। - In-place Editing: Sed এর
-iঅপশন ব্যবহার করে আপনি সরাসরি ফাইলের মধ্যে পরিবর্তন করতে পারেন, যা ফাইলের ডেটা পরিবর্তন করার জন্য অত্যন্ত কার্যকর। - File Manipulation: Sed ব্যবহার করে আপনি ফাইলের মধ্যে প্যাটার্ন অনুসারে লাইন মুছে ফেলতে পারেন, নতুন লাইন যোগ করতে পারেন, এবং বিভিন্ন ধরনের টেক্সট পরিবর্তন করতে পারেন।
এটি ফাইল ম্যানিপুলেশন এবং আউটপুট রিডিরেকশন সম্পর্কিত কিছু মৌলিক ধারণা যা আপনাকে দ্রুত এবং কার্যকরভাবে টেক্সট পরিবর্তন করতে সহায়তা করবে।
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 ফ্ল্যাগ ব্যবহার করার আগে অবশ্যই ব্যাকআপ রাখতে ভুলবেন না, যাতে কোনো অপ্রত্যাশিত পরিবর্তন হলে তা পুনরুদ্ধার করা যায়।
Sed (Stream Editor) ব্যবহার করার সময় temporary files এবং backup creation দুটি গুরুত্বপূর্ণ টেকনিক। এগুলি আপনাকে ফাইলের পরিবর্তন করার আগে নিরাপত্তা এবং অস্থায়ী ফাইল ব্যবহার করার সুযোগ দেয়। এতে আপনার মূল ফাইল ক্ষতিগ্রস্ত হওয়ার সম্ভাবনা কম থাকে এবং আপনি যেকোনো সময় পূর্বাবস্থায় ফিরে যেতে পারেন।
1. Temporary Files এর ব্যবহার
Temporary files হলো অস্থায়ী ফাইল, যেগুলি কাজের জন্য ব্যবহৃত হয় কিন্তু পরে মুছে ফেলা হয়। যখন আপনি Sed ব্যবহার করেন, আপনি একটি ফাইলের মধ্যে বিভিন্ন পরিবর্তন করতে চান, কিন্তু আপনার মূল ফাইলটি পরিবর্তন না করতে চান, তখন temporary files তৈরি করা হয়।
Temporary Files তৈরি করার সাধারণ পদ্ধতি
অস্থায়ী ফাইল তৈরি করে Sed ব্যবহার করা:
আপনিsedকমান্ড দিয়ে অস্থায়ী ফাইল তৈরি করতে পারেন এবং সেই ফাইলের পরিবর্তন করে পরে মূল ফাইলের সাথে মেলাতে পারেন। উদাহরণস্বরূপ:sed 's/cat/dog/g' input.txt > temp.txt mv temp.txt input.txtএখানে:
- প্রথমে
sed 's/cat/dog/g' input.txtকমান্ডটিinput.txtফাইলের সব "cat" শব্দগুলোকে "dog"-এ প্রতিস্থাপন করে temp.txt নামের অস্থায়ী ফাইলে আউটপুট লিখে রাখবে। - তারপর
mv temp.txt input.txtকমান্ডটি অস্থায়ী ফাইল temp.txt-কে মূল ফাইল input.txt তে মুভ করে দিবে।
- প্রথমে
- অস্থায়ী ফাইলের সাথে কাজ করার সুবিধা:
- এটি আপনার মূল ফাইল নিরাপদ রাখে, এবং যদি কোনো ভুল ঘটে তবে আপনি temp.txt ফাইলটি আবার পরীক্ষা করে দেখতে পারেন।
- Sed পরিবর্তন করার পর সরাসরি মূল ফাইলে পরিবর্তন করতে চান না, তখন আপনি অস্থায়ী ফাইল ব্যবহার করতে পারেন এবং পরে মূল ফাইলটি পরিবর্তন করতে পারেন।
অস্থায়ী ফাইল তৈরি করার সময় মাথায় রাখার বিষয়:
- অস্থায়ী ফাইল ব্যবহার করার সময় আপনার যেকোনো ভুলের জন্য আপনি দ্বিতীয়বার পরীক্ষা করতে পারবেন। কিন্তু, মনে রাখতে হবে, যখন আপনি অস্থায়ী ফাইলের মাধ্যমে মূল ফাইল পরিবর্তন করবেন, তখন অতিরিক্ত কোনো তথ্য হারিয়ে যেতে পারে।
2. Backup Creation (ব্যাকআপ তৈরি)
Backup creation হলো Sed-এ মূল ফাইলের কোনও পরিবর্তন করার আগে তার একটি কপি রাখা। এটি আপনার মূল ফাইলের একটি নিরাপদ কপি তৈরি করে যাতে আপনি যদি কোনো ভুল করেন, তবে আপনি সেখান থেকে ফিরে আসতে পারেন।
Sed-এ backup তৈরি করতে -i (in-place editing) অপশন ব্যবহার করতে পারেন এবং এর পরে <suffix> ব্যবহার করে ফাইলের একটি ব্যাকআপ কপি তৈরি করতে পারেন।
Backup creation with -i option
-i অপশন Sed-এ in-place editing জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি ফাইলের মধ্যে সরাসরি পরিবর্তন করতে পারেন এবং ব্যাকআপ কপি তৈরি করতে পারেন।
সিনট্যাক্স:
sed -i.bak 's/cat/dog/g' file.txtএখানে:
-i.bak:-iঅপশনটি in-place editing নির্দেশ করে, এবং.bakহল ব্যাকআপ ফাইলের suffix (এক্সটেনশন), যার মাধ্যমে মূল ফাইলের একটি ব্যাকআপ তৈরি হবে।s/cat/dog/g: এই কমান্ডটি "cat" শব্দটি "dog"-এ পরিবর্তন করবে।file.txt: মূল ফাইল যেখানে পরিবর্তন হবে।
ব্যাকআপ ফাইলের উদাহরণ
ধরা যাক, আপনি file.txt ফাইলে "cat" শব্দকে "dog" দিয়ে প্রতিস্থাপন করতে চান এবং একই সঙ্গে একটি ব্যাকআপ কপি তৈরি করতে চান। কমান্ড হবে:
sed -i.bak 's/cat/dog/g' file.txtএটি:
file.txtফাইলের মধ্যে "cat" শব্দগুলো "dog"-এ প্রতিস্থাপন করবে।file.txt.bakনামে একটি ব্যাকআপ ফাইল তৈরি করবে যেখানে মূল file.txt এর পুরনো কপি থাকবে।
ব্যাকআপের সুবিধা:
- ব্যাকআপ ফাইল তৈরি করা, মূল ফাইলের পরিবর্তন করার আগে আপনার কাজের নিরাপত্তা নিশ্চিত করে।
- আপনি যদি ভুল করে ফেলেন, তাহলে আপনি ব্যাকআপ ফাইল থেকে পুরানো তথ্য ফিরে পেতে পারবেন।
একাধিক ব্যাকআপ স্যুফিক্স ব্যবহার:
যদি আপনি একাধিক ব্যাকআপ তৈরি করতে চান, আপনি ব্যাকআপ স্যুফিক্স পরিবর্তন করতে পারেন।
sed -i'.backup' 's/cat/dog/g' file.txtএটি .backup স্যুফিক্স সহ ব্যাকআপ তৈরি করবে, যেমন: file.txt.backup.
3. Temporary Files এবং Backup Creation-এর সুবিধা
- Main File Protection: আপনি যেহেতু মূল ফাইল পরিবর্তন করার আগে অস্থায়ী বা ব্যাকআপ ফাইল ব্যবহার করছেন, আপনার মূল ফাইল নিরাপদ থাকে।
- Mistake Recovery: যদি আপনি Sed কমান্ডের মাধ্যমে ভুল কিছু পরিবর্তন করেন, তবে আপনি ব্যাকআপ ফাইল থেকে ফিরে আসতে পারেন।
- Testing: আপনি অস্থায়ী ফাইল ব্যবহার করে পরিবর্তন পরীক্ষা করতে পারেন এবং যদি পরিবর্তন ঠিকঠাক না হয়, তবে মূল ফাইল থেকে ফিরিয়ে আনার সুযোগ থাকে।
- Efficiency: যেকোনো স্ক্রিপ্টিং প্রক্রিয়ায় Sed-এ অস্থায়ী ফাইল এবং ব্যাকআপ ব্যবহার করে দ্রুত কাজ করা সম্ভব।
Conclusion
- Temporary Files Sed-এ পরিবর্তন করার আগে নিরাপদ উপায়ে টেস্ট করার জন্য ব্যবহার করা হয়, এবং পরে এগুলো মূল ফাইলে যুক্ত করা হয়।
- Backup Creation Sed-এ
-iঅপশন দিয়ে মূল ফাইলের একটি ব্যাকআপ তৈরি করার সুবিধা দেয়, যাতে কোনো ভুল হলে আপনি সহজেই পূর্বাবস্থায় ফিরে যেতে পারেন। - এই দুটি টেকনিক আপনার ফাইল ম্যানিপুলেশন আরও নিরাপদ এবং কার্যকরী করে তোলে।
Read more