Sed (Stream Editor) ব্যবহার করে Bulk Text Processing (একাধিক টেক্সট প্রক্রিয়া) এবং Automation Tasks (স্বয়ংক্রিয় কাজ) সম্পাদন করা যায় খুবই সহজভাবে, বিশেষত যখন আপনাকে বড় আকারের টেক্সট ফাইল বা ডেটাসেট নিয়ে কাজ করতে হয়। Sed টুলটি কার্যকরীভাবে ব্যবহৃত হয় টেক্সট ফাইলের মধ্যে একাধিক পরিবর্তন, ফরম্যাটিং, ম্যানিপুলেশন বা যেকোনো ধরনের স্বয়ংক্রিয় প্রক্রিয়া সম্পাদন করার জন্য।
এখানে Bulk Text Processing এবং Automation Tasks এর জন্য কিছু কার্যকর Sed স্ক্রিপ্টিং কৌশল ও উদাহরণ আলোচনা করা হলো:
1. Bulk Text Processing with Sed
Bulk Text Processing এর মাধ্যমে আপনি একাধিক ফাইল বা ডেটার উপর একই কাজ বা পরিবর্তন সম্পাদন করতে পারেন। Sed একটি একক লাইনে কাজ করার জন্য ডিজাইন করা হলেও, এটি একাধিক ফাইল বা টেক্সট স্ট্রিমের উপর একই পরিবর্তন করতে পারে।
উদাহরণ 1: একাধিক ফাইলে একই পরিবর্তন প্রয়োগ করা
যদি আপনি একাধিক ফাইলে একই ধরনের পরিবর্তন করতে চান, যেমন "cat" শব্দকে "dog" দিয়ে প্রতিস্থাপন, তাহলে sed কমান্ডের মাধ্যমে এই কাজটি করতে পারেন।
sed -i 's/cat/dog/g' file1.txt file2.txt file3.txtএটি file1.txt, file2.txt এবং file3.txt ফাইলের মধ্যে সমস্ত "cat" শব্দকে "dog" দিয়ে প্রতিস্থাপন করবে এবং তা সরাসরি সেভ করবে।
উদাহরণ 2: একাধিক ফাইলের মধ্যে নতুন লাইন যোগ করা
আপনি যদি একাধিক ফাইলে একই সময়ে নতুন লাইন যোগ করতে চান, তাহলে a কমান্ড ব্যবহার করতে পারেন।
sed -i '1a This is a new line' file1.txt file2.txt file3.txtএটি file1.txt, file2.txt, এবং file3.txt ফাইলের প্রথম লাইনের পরে "This is a new line" যোগ করবে।
উদাহরণ 3: ফাইলের মধ্যে প্যাটার্ন মুছে ফেলা
যদি আপনি একাধিক ফাইল থেকে কোনো নির্দিষ্ট প্যাটার্ন মুছে ফেলতে চান, যেমন সব খালি লাইন মুছে ফেলা, আপনি sed দিয়ে এটি করতে পারেন।
sed -i '/^$/d' file1.txt file2.txt file3.txtএটি সমস্ত খালি লাইন (যেগুলির মধ্যে কিছুই নেই) file1.txt, file2.txt, এবং file3.txt ফাইল থেকে মুছে ফেলবে।
2. Automation Tasks with Sed
Automation Tasks এর মাধ্যমে আপনি কমপ্লেক্স টেক্সট ম্যানিপুলেশন কাজগুলি একাধিক ফাইলে বা স্ক্রিপ্টে এক্সিকিউট করতে পারেন, যা নির্দিষ্ট সময় বা পরিস্থিতি অনুযায়ী টাস্কগুলি সম্পন্ন করবে।
উদাহরণ 4: রেগুলার এক্সপ্রেশন দিয়ে টেক্সট প্রতিস্থাপন
যদি আপনার টেক্সট ফাইলে কিছু নির্দিষ্ট প্যাটার্ন অনুসারে প্রতিস্থাপন করতে হয়, আপনি sed এবং Regular Expressions ব্যবহার করে একাধিক প্যাটার্নের জন্য স্বয়ংক্রিয় কাজ করতে পারেন।
sed -i 's/\bcat\b/dog/g; s/\bfish\b/seafood/g' *.txtএটি সমস্ত .txt ফাইলের মধ্যে "cat" শব্দকে "dog" এবং "fish" শব্দকে "seafood" দিয়ে প্রতিস্থাপন করবে।
উদাহরণ 5: ইনপুট ফাইলের ভিত্তিতে আউটপুট তৈরি করা
আপনি Sed স্ক্রিপ্ট ব্যবহার করে আউটপুট তৈরি করতে পারেন, যেমন একটি স্ক্রিপ্ট লিখে ইনপুট ফাইল থেকে আউটপুট তৈরি করা। এটি স্বয়ংক্রিয়ভাবে একাধিক ফাইলের উপর কাজ করতে সহায়তা করে।
#!/bin/bash
for file in *.txt; do
sed 's/cat/dog/g' "$file" > "processed_$file"
doneএটি বর্তমান ডিরেক্টরির সকল .txt ফাইলের "cat" শব্দকে "dog" দিয়ে প্রতিস্থাপন করবে এবং প্রতিটি ফাইলের আউটপুট processed_ প্রিফিক্স দিয়ে নতুন ফাইলে সেভ করবে।
উদাহরণ 6: ইনপুট ফাইল থেকে নির্দিষ্ট লাইন মুছে ফেলা
যদি আপনি একটি ফাইলে কিছু নির্দিষ্ট লাইন মুছে ফেলতে চান (যেমন, প্যাটার্ন মেলা লাইন), আপনি Sed দিয়ে এটি স্বয়ংক্রিয়ভাবে করতে পারেন।
sed -i '/pattern/d' file.txtএটি file.txt ফাইল থেকে "pattern" শব্দটি মিলে এমন সমস্ত লাইন মুছে ফেলবে। আপনি একাধিক ফাইলেও একই কাজ করতে পারেন।
উদাহরণ 7: ফাইলের মধ্যে প্যাটার্ন অনুসারে লাইন যোগ করা
আপনি যদি sed স্ক্রিপ্ট ব্যবহার করে নির্দিষ্ট লাইনে নতুন লাইন যোগ করতে চান, যেমন যেসকল লাইনে "cat" শব্দ আছে, তাদের পরে একটি নতুন লাইন যোগ করা:
sed '/cat/ a New line after cat' file.txtএটি file.txt ফাইলের যেসব লাইনে "cat" শব্দ রয়েছে, তাদের পরে "New line after cat" যোগ করবে।
উদাহরণ 8: ইনপুট ফাইলের ভিত্তিতে আউটপুট ফাইল তৈরি করা
sed 's/old_text/new_text/g' input_file.txt > output_file.txtএটি input_file.txt ফাইল থেকে "old_text" শব্দকে "new_text" দিয়ে প্রতিস্থাপন করবে এবং আউটপুট output_file.txt ফাইলে সেভ করবে।
3. Sed ফাংশন এবং লুপ ব্যবহার করা (Advanced)
যদি আপনি কিছু পুনরাবৃত্তি কাজ করতে চান, যেমন স্ক্রিপ্টের মধ্যে টেক্সট প্রক্রিয়াকরণের জন্য লুপ বা ফাংশন ব্যবহার, তখন আপনি Sed স্ক্রিপ্টে লুপ এবং ফাংশন ব্যবহার করতে পারেন। যদিও Sed সরাসরি লুপ বা ফাংশন সাপোর্ট করে না, তবে আপনি স্ক্রিপ্টের মধ্যে কিছু পুনরাবৃত্তি করতে bash scripting এর সাহায্য নিতে পারেন।
উদাহরণ 9: ফাইলের সমস্ত লাইন প্রক্রিয়া করার জন্য লুপ ব্যবহার
for file in *.txt; do
sed 's/cat/dog/g' "$file" > "processed_$file"
doneএটি সমস্ত .txt ফাইলের মধ্যে "cat" শব্দকে "dog" দিয়ে প্রতিস্থাপন করবে এবং নতুন আউটপুট ফাইল তৈরি করবে।
Conclusion
- Bulk Text Processing: Sed ব্যবহার করে আপনি একাধিক ফাইলে একই কাজ করতে পারেন, যেমন শব্দ প্রতিস্থাপন, লাইন মুছে ফেলা, নতুন লাইন যোগ করা ইত্যাদি। এর জন্য
-i,-f, এবং wildcards (যেমন*.txt) ব্যবহার করে কাজ করতে পারবেন। - Automation Tasks: Sed স্ক্রিপ্ট তৈরি করে আপনি স্বয়ংক্রিয়ভাবে একাধিক টেক্সট ফাইল বা স্ট্রিমের উপর কাজ করতে পারেন। স্ক্রিপ্টে একাধিক Sed কমান্ড, loop, এবং regular expressions ব্যবহার করে জটিল টেক্সট প্রক্রিয়াকরণ করতে পারেন।
- Sed স্ক্রিপ্টিংয়ের মাধ্যমে আপনি input-output ফাইল তৈরি, pattern matching এবং conditional execution করতে পারেন।
এই কৌশলগুলি আপনাকে Sed দিয়ে Bulk Text Processing এবং Automation Tasks সহজে সম্পন্ন করতে সাহায্য করবে।
Read more