Sed (Stream Editor) একটি শক্তিশালী টুল যা data manipulation বা ডেটা প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। Sed এর মধ্যে ব্যবহৃত buffers ডেটাকে স্টোর করার জন্য ব্যবহৃত হয়, যাতে আপনি তার উপর বিভিন্ন ধরনের অপারেশন যেমন পরিবর্তন, মুছে ফেলা, বা ইনসার্ট করতে পারেন। Sed-এর মাধ্যমে buffers পরিচালনা করার মাধ্যমে আপনি complex data manipulation করতে পারেন, যা আপনাকে ডেটা প্রক্রিয়া করার জন্য আরও বেশি ফ্লেক্সিবিলিটি দেয়।
Sed Buffers এর ধারণা
Sed মূলত দুটি buffer ব্যবহার করে কাজ করে:
- Pattern Space: এটি Sed এর মধ্যে একটি প্রধান buffer যেখানে ইনপুট ডেটা থাকে। Pattern space এ আপনার কাজের জন্য প্রয়োজনীয় ডেটা সংরক্ষিত থাকে এবং এখানেই Sed এর সমস্ত পরিবর্তন কার্যকর হয়।
- Hold Space: এটি একটি দ্বিতীয় buffer, যা সাধারণত নির্দিষ্ট ডেটা সংরক্ষণ করতে ব্যবহৃত হয়।
hold spaceএকটি অতিরিক্ত স্থান যেখানে আপনি কিছু ডেটা রাখতে পারেন এবং পরবর্তী সময়ে ব্যবহার করতে পারেন।
Sed মূলত pattern space এবং hold space এর মধ্যে ডেটা ম্যানিপুলেট করতে সক্ষম, এবং একে অপরের মধ্যে ডেটা স্থানান্তর করতে পারে।
Pattern Space এবং Hold Space এর মধ্যে ডেটা স্থানান্তর
Sed এর মধ্যে pattern space এবং hold space এর মধ্যে ডেটা স্থানান্তর করতে বিশেষ কমান্ড ব্যবহার করা হয়। নিচে এর বিস্তারিত আলোচনা করা হল।
1. Pattern Space (প্যাটার্ন স্পেস)
Pattern space হলো Sed এর প্রধান buffer, যেখানে ইনপুট ফাইলের প্রতিটি লাইনের ডেটা প্রক্রিয়া করার জন্য স্থানান্তরিত হয়। এখানে আপনি পরিবর্তন করতে পারেন, এবং যখন Sed কমান্ড রান হয়, তখন Pattern Space এর উপরই অপারেশন করা হয়।
2. Hold Space (হোল্ড স্পেস)
Hold space হলো একটি অস্থায়ী স্থান, যেখানে আপনি কিছু ডেটা সংরক্ষণ করতে পারেন এবং পরে সেগুলি ব্যবহার করতে পারেন। এটি একটি temporary buffer যা pattern space থেকে আলাদা।
Sed Buffers এর মাধ্যমে Data Manipulation
Sed এর buffers এর মাধ্যমে ডেটা ম্যানিপুলেশন করার জন্য দুটি প্রধান কমান্ড ব্যবহৃত হয়:
h(hold): এটি pattern space এর ডেটাকে hold space এ সংরক্ষণ করে।H(append to hold space): এটি pattern space এর ডেটাকে hold space এর সাথে যুক্ত (append) করে।g(get): এটি hold space থেকে ডেটা নিয়ে pattern space এ এনে রাখে।G(append hold space to pattern space): এটি hold space এর ডেটাকে pattern space এর শেষে যুক্ত (append) করে।x(exchange): এটি pattern space এবং hold space এর ডেটার স্থান পরিবর্তন (swap) করে।
এখানে কিছু উদাহরণ দেখা যাক:
Example 1: Pattern Space থেকে Hold Space এ ডেটা সংরক্ষণ করা
ধরা যাক, আপনার একটি ফাইল রয়েছে এবং আপনি প্রতিটি লাইনের শেষে কিছু তথ্য যোগ করতে চান, কিন্তু সেই তথ্য প্রথমে Pattern Space থেকে Hold Space এ সংরক্ষণ করতে চান।
কমান্ড উদাহরণ:
sed 'h; s/apple/fruit/; x; s/fruit/banana/' file.txtএখানে:
h: প্রথমে Pattern Space এর ডেটাকে Hold Space এ সংরক্ষণ করা হচ্ছে।s/apple/fruit/: Pattern Space এ "apple" শব্দকে "fruit"-এ পরিবর্তন করা হচ্ছে।x: এরপর Pattern Space এবং Hold Space এর ডেটা একে অপরের সাথে স্থান পরিবর্তন করছে।s/fruit/banana/: এখন, Hold Space থেকে Pattern Space এ এসে, "fruit" শব্দটি "banana"-এ পরিবর্তিত হচ্ছে।
এটি "apple" শব্দটিকে "fruit" থেকে "banana" তে পরিবর্তন করতে সাহায্য করবে, এবং প্রথমে Hold Space এ ডেটা সংরক্ষণ করে তা প্রক্রিয়াকরণের জন্য ব্যবহার করবে।
Example 2: Hold Space এবং Pattern Space এর মধ্যে ডেটা স্থানান্তর করা
এখন, ধরুন আপনার একটি ফাইল রয়েছে, যেখানে আপনি প্রতিটি লাইন থেকে একটি শব্দ নিয়ে সেটি পরবর্তী লাইনে পুনরায় যুক্ত করতে চান।
ফাইল কনটেন্ট (input.txt):
apple
banana
cherryকমান্ড উদাহরণ:
sed 'h; n; g; s/$/ fruit/' file.txtএখানে:
h: Pattern Space থেকে ডেটা Hold Space এ সংরক্ষণ করা হচ্ছে।n: পরবর্তী লাইনে চলে যাওয়া হচ্ছে।g: Hold Space থেকে ডেটা Pattern Space এ এনে রাখা হচ্ছে।s/$/ fruit/: Pattern Space এর শেষে "fruit" যোগ করা হচ্ছে।
এটি পরবর্তী লাইনকে Pattern Space এ নিয়ে এসে তার শেষে "fruit" যোগ করবে।
আউটপুট:
apple fruit
banana fruit
cherry fruitএখানে, "apple", "banana", "cherry" লাইনগুলোর শেষে "fruit" যুক্ত হয়েছে।
Example 3: Pattern Space এবং Hold Space এর স্থান পরিবর্তন
ধরা যাক, আপনার দুটি ফাইল রয়েছে এবং আপনি একটি ফাইলে যে তথ্য আছে তা অন্য ফাইলে যোগ করতে চান। এটি Pattern Space এবং Hold Space এর মাধ্যমে করা যেতে পারে।
কমান্ড উদাহরণ:
sed 'h; r file2.txt; g' file1.txtএখানে:
h: Pattern Space এর ডেটা Hold Space এ সংরক্ষণ করা হচ্ছে।r file2.txt:file2.txtফাইল থেকে ডেটা পড়ে Pattern Space এ আনা হচ্ছে।g: Hold Space থেকে ডেটা Pattern Space এ এনে রাখা হচ্ছে।
এটি file2.txt এর কন্টেন্ট file1.txt এর Pattern Space এ যোগ করবে এবং পরে সেই ডেটাকে ব্যবহার করতে পারবে।
সারাংশ
Sed এর মাধ্যমে buffers ব্যবহার করে আপনি জটিল data manipulation করতে পারেন। Pattern Space এবং Hold Space এর মধ্যে ডেটা স্থানান্তর করা, ডেটা সংরক্ষণ করা এবং পুনরায় সেই ডেটা ব্যবহার করা Sed কে আরও শক্তিশালী এবং নমনীয় করে তোলে। Sed এর এই ক্ষমতাগুলি আপনার স্ক্রিপ্টিং এবং টেক্সট ম্যানিপুলেশনকে অনেক কার্যকরী করে তুলবে।
Read more