Sed (Stream Editor) ব্যবহার করার সময়, দুটি বিশেষ জায়গা থাকে যেখানে তথ্য সংরক্ষিত থাকে: Pattern Space এবং Hold Space। এই দুটি স্পেস Sed এর কমান্ডগুলো কার্যকর করার জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে, বিশেষ করে যখন তথ্য আদান-প্রদান করতে হয় বা একটি কমান্ডের মধ্যে তথ্য পরিবর্তন বা ব্যবহারের প্রয়োজন হয়।
Pattern Space এবং Hold Space এর ধারণা
- Pattern Space:
- Pattern Space হলো Sed এর মূল টেক্সট স্টোরেজ জায়গা, যেখানে Sed কমান্ড প্রক্রিয়া করে এবং পরিবর্তন সম্পাদন করে।
- এটি একটি একক লাইনের জন্য থাকে এবং Sed এই স্পেসে তথ্য আপডেট এবং ম্যানিপুলেট করে।
- যখন Sed ফাইল প্রক্রিয়া করে, প্রতিটি লাইনকে প্রথমে Pattern Space-এ পাঠানো হয়, এবং তারপর সেখানে পরিবর্তন করা হয়।
- Hold Space:
- Hold Space হলো একটি অস্থায়ী স্টোরেজ স্পেস যা Sed-এ প্যাটার্ন স্পেসের বাইরে থাকে।
- এটি Sed স্ক্রিপ্টের মধ্যে একটি temporary storage area হিসেবে কাজ করে, যেখানে তথ্য রাখা হয় এবং পরবর্তীতে সেই তথ্যকে প্যাটার্ন স্পেসে পুনরায় ফেরত আনা বা ম্যানিপুলেট করা হয়।
- Hold Space এর মাধ্যমে, আপনি একাধিক লাইনের মধ্যে তথ্য সংরক্ষণ করে এবং পুনরায় ব্যবহার করতে পারেন।
Pattern Space এবং Hold Space এর মধ্যে তথ্য আদান-প্রদান
Sed-এ Pattern Space এবং Hold Space এর মধ্যে তথ্য আদান-প্রদান করতে h, H, g, এবং G কমান্ড ব্যবহার করা হয়। এদের মাধ্যমে আপনি Pattern Space থেকে Hold Space-এ তথ্য রাখতে পারেন এবং Hold Space থেকে Pattern Space-এ তথ্য ফিরিয়ে আনতে পারেন।
h এবং H কমান্ড: Hold Space-এ তথ্য রাখা
h: এটি Pattern Space থেকে তথ্য নিয়ে Hold Space-এ সরাসরি সেটি কপি করে রাখে।H: এটি Pattern Space থেকে তথ্য নিয়ে Hold Space-এ অ্যাপেন্ড করে (অর্থাৎ, পুরোনো তথ্যের পরে নতুন তথ্য যোগ করে)।
g এবং G কমান্ড: Hold Space থেকে তথ্য Pattern Space-এ আনা
g: এটি Hold Space থেকে তথ্য নিয়ে Pattern Space-এ কপি করে আনে।G: এটি Hold Space থেকে তথ্য Pattern Space-এ অ্যাপেন্ড (যেমন নতুন তথ্য যোগ করা) করে আনে।
Pattern Space এবং Hold Space এর মধ্যে তথ্য আদান-প্রদান করার উদাহরণ
- Pattern Space থেকে Hold Space-এ তথ্য রাখা (
hএবংH):hকমান্ডের উদাহরণ: Pattern Space এর তথ্যকে Hold Space-এ কপি করা।sed 'h' file.txtএই কমান্ডটি
file.txtএর প্রথম লাইনকে Pattern Space-এ রেখে তা Hold Space-এ কপি করবে। এরপর পরবর্তী কমান্ডের জন্য এটি ব্যবহৃত হবে।Hকমান্ডের উদাহরণ: Pattern Space এর তথ্যকে Hold Space-এ অ্যাপেন্ড করা।sed 'H' file.txtএটি Pattern Space-এ থাকা তথ্যকে Hold Space-এ যোগ করবে, অর্থাৎ পূর্ববর্তী তথ্যের পরে নতুন তথ্য যুক্ত হবে।
- Hold Space থেকে Pattern Space-এ তথ্য আনা (
gএবংG):gকমান্ডের উদাহরণ: Hold Space থেকে তথ্য Pattern Space-এ কপি করা।sed 'g' file.txtএই কমান্ডটি Hold Space-এ থাকা তথ্য Pattern Space-এ কপি করবে। এটি Pattern Space-এ নতুন তথ্য যোগ করবে।
Gকমান্ডের উদাহরণ: Hold Space থেকে তথ্য Pattern Space-এ অ্যাপেন্ড করা।sed 'G' file.txtএটি Hold Space-এ থাকা তথ্য Pattern Space-এ অ্যাপেন্ড করবে, অর্থাৎ "pattern space" এর শেষে "hold space" থেকে তথ্য যোগ করবে।
Pattern Space এবং Hold Space এর তথ্য আদান-প্রদান এর সাথে Complex Editing
Pattern Space এবং Hold Space এর মধ্যে তথ্য আদান-প্রদান খুবই শক্তিশালী উপায় Complex Editing করতে সাহায্য করে। উদাহরণস্বরূপ, আপনি যদি একটি লাইন থেকে তথ্য সংরক্ষণ করতে চান এবং পরবর্তী লাইনে সেই তথ্য ব্যবহার করতে চান, তবে আপনি এই দুটি স্পেস ব্যবহার করতে পারেন।
উদাহরণ 1: Pattern Space থেকে Hold Space-এ তথ্য রাখার পর তা পরবর্তী লাইনে ব্যবহার করা
sed '1h; 2g; s/\n/ /' file.txtএটি:
- প্রথম লাইনে তথ্য Hold Space-এ কপি করবে (
hকমান্ড)। - দ্বিতীয় লাইনে Hold Space থেকে তথ্য নিয়ে Pattern Space-এ যোগ করবে (
gকমান্ড)। - তারপর নতুন Pattern Space তৈরি করে দুই লাইনের মধ্যে তথ্য যুক্ত করবে।
উদাহরণ 2: Pattern Space থেকে Hold Space-এ তথ্য রাখা এবং পরে ব্যবহার করা
sed 'h; 1!G; s/\n/ /' file.txtএটি:
- প্রথম লাইনে Pattern Space থেকে তথ্য Hold Space-এ কপি করবে।
- পরবর্তী লাইনগুলোতে Hold Space থেকে তথ্য Pattern Space-এ অ্যাপেন্ড করবে (
Gকমান্ড)। - তারপর দুই লাইনের মধ্যে স্পেস যোগ করবে।
Conclusion
- Pattern Space হলো Sed এর মূল জায়গা যেখানে তথ্য প্রক্রিয়া করা হয়, এবং Hold Space হলো একটি অস্থায়ী স্টোরেজ, যেখানে আপনি তথ্য সংরক্ষণ করতে পারেন।
- Pattern Space এবং Hold Space এর মধ্যে তথ্য আদান-প্রদান করার জন্য
h,H,g, এবংGকমান্ড ব্যবহার করা হয়। - এই প্রক্রিয়া আপনাকে একাধিক লাইনের মধ্যে তথ্য সংরক্ষণ এবং ম্যানিপুলেট করার ক্ষমতা দেয়, যা Complex Editing-এর জন্য অত্যন্ত সহায়ক।
Read more