Sed Buffers এবং Hold Space হল Sed (Stream Editor) এর একটি বিশেষ বৈশিষ্ট্য যা আরও জটিল এবং শক্তিশালী টেক্সট প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। এই বৈশিষ্ট্যগুলির মাধ্যমে আপনি টেক্সটের বিভিন্ন অংশকে সংরক্ষণ, পরিবর্তন এবং প্রসেস করতে পারেন, যাতে অতিরিক্ত তথ্য সংরক্ষণ এবং পুনরায় ব্যবহার করা যায়।
Sed Buffers
Sed এ দুটি প্রধান Buffer বা বাফার থাকে:
- Pattern Space (প্যাটার্ন স্পেস)
- Hold Space (হোল্ড স্পেস)
Pattern Space (প্যাটার্ন স্পেস)
Pattern Space হল মূল বাফার যেখানে Sed ইনপুট ডেটা প্রক্রিয়া করে। এটি Sed দ্বারা প্রক্রিয়াকৃত লাইনের জন্য একটি ইন-মেমরি স্টোরেজ স্থান। যখন Sed কোনো লাইন প্রক্রিয়া করে, সেটি প্রথমে Pattern Space তে লোড হয় এবং Sed এর কমান্ডগুলি এই স্পেসে প্রয়োগ করা হয়। প্রতিটি নতুন লাইনে Sed পুরনো প্যাটার্ন স্পেসটি খালি করে নতুন লাইনে কাজ করে।
Hold Space (হোল্ড স্পেস)
Hold Space একটি আলাদা বাফার যা Sed কে ইনপুট ডেটার কিছু অংশ সংরক্ষণ করতে সাহায্য করে, যাতে আপনি পরে সেই সংরক্ষিত ডেটার উপর কাজ করতে পারেন। এটি মূলত Pattern Space থেকে ডেটা ধারণ এবং পরে সেই ডেটা ফিরে আনার জন্য ব্যবহৃত হয়।
Sed এ Hold Space সাধারণত দুটি উদ্দেশ্যে ব্যবহৃত হয়:
- তথ্য সংরক্ষণ: আপনি যদি কোনো অংশের উপর কাজ করে সেটি সংরক্ষণ করতে চান এবং পরে আবার ব্যবহার করতে চান, তখন Hold Space ব্যবহার হয়।
- প্যাটার্ন স্থান এবং হোল্ড স্পেসের মধ্যে ডেটা স্থানান্তর: Sed এ আপনি হোল্ড স্পেস থেকে প্যাটার্ন স্পেসে ডেটা স্থানান্তর করতে পারেন এবং এর মাধ্যমে আরও জটিল ম্যানিপুলেশন করতে পারেন।
Pattern Space এবং Hold Space ব্যবহার
Sed এ Pattern Space এবং Hold Space ব্যবহার করে আপনি অনেক ধরনের জটিল কাজ করতে পারেন। এটি বিশেষত তখন কাজে আসে যখন আপনি একটি লাইন থেকে কোনো তথ্য নিয়ে পরবর্তী লাইনের সাথে তুলনা বা সংযুক্ত করতে চান।
Hold Space Commands (হোল্ড স্পেস কমান্ডস)
Sed এ Hold Space এর জন্য কিছু বিশেষ কমান্ড রয়েছে:
- h: এই কমান্ডটি Pattern Space থেকে সমস্ত ডেটা Hold Space এ কপি করে।
- সিনট্যাক্স:
h উদাহরণ:
sed 'h' file.txt
- সিনট্যাক্স:
- H: এই কমান্ডটি Pattern Space থেকে সমস্ত ডেটা Hold Space এ অ্যাপেন্ড করে, অর্থাৎ ডেটা হোল্ড স্পেসে যোগ করে।
- সিনট্যাক্স:
H উদাহরণ:
sed 'H' file.txt
- সিনট্যাক্স:
- g: এই কমান্ডটি Hold Space থেকে সমস্ত ডেটা Pattern Space তে কপি করে নিয়ে আসে।
- সিনট্যাক্স:
g উদাহরণ:
sed 'g' file.txt
- সিনট্যাক্স:
- G: এই কমান্ডটি Hold Space থেকে সমস্ত ডেটা Pattern Space তে অ্যাপেন্ড করে।
- সিনট্যাক্স:
G উদাহরণ:
sed 'G' file.txt
- সিনট্যাক্স:
- x: এই কমান্ডটি Pattern Space এবং Hold Space এর মধ্যে ডেটা একে অপরের সাথে বিনিময় করে।
- সিনট্যাক্স:
x উদাহরণ:
sed 'x' file.txt
- সিনট্যাক্স:
- d: Pattern Space থেকে সমস্ত ডেটা মুছে ফেলে, কিন্তু Hold Space এর ডেটা বজায় থাকে।
- সিনট্যাক্স:
d উদাহরণ:
sed 'd' file.txt
- সিনট্যাক্স:
Pattern Space এবং Hold Space এর মধ্যে ডেটা স্থানান্তর
Pattern Space থেকে Hold Space এ ডেটা স্থানান্তর:
আপনি যদি Pattern Space তে থাকা ডেটা Hold Space এ স্থানান্তর করতে চান, তবেhকমান্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ:কমান্ড:
sed 'h' file.txtএটি Pattern Space থেকে সমস্ত ডেটা Hold Space তে স্থানান্তর করবে।
Hold Space থেকে Pattern Space এ ডেটা স্থানান্তর:
আপনি যদি Hold Space তে থাকা ডেটা Pattern Space তে ফিরিয়ে আনতে চান, তাহলেgকমান্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ:কমান্ড:
sed 'g' file.txtএটি Hold Space থেকে ডেটা Pattern Space তে ফিরিয়ে আনবে।
Pattern Space এবং Hold Space এর মধ্যে ডেটা একে অপরের সাথে বিনিময়:
আপনি যদি Pattern Space এবং Hold Space এর মধ্যে ডেটা একে অপরের সাথে বিনিময় করতে চান, তাহলেxকমান্ড ব্যবহার করা হয়। উদাহরণস্বরূপ:কমান্ড:
sed 'x' file.txtএটি Pattern Space এবং Hold Space এর মধ্যে ডেটা একে অপরের সাথে বিনিময় করবে।
Sed Buffers এবং Hold Space এর ব্যবহার
Sed এর Pattern Space এবং Hold Space এর মাধ্যমে আপনি বিভিন্ন ধরনের জটিল কাজ সম্পাদন করতে পারেন যেমন:
- একাধিক লাইনের ম্যানিপুলেশন: একাধিক লাইনের ডেটা একসাথে রাখার মাধ্যমে আপনি আরো জটিল প্রক্রিয়া সম্পাদন করতে পারেন।
- তথ্য সংরক্ষণ এবং পুনরায় ব্যবহার: একটি লাইনের কিছু তথ্য সংগ্রহ করে সেটিকে পরবর্তী লাইনে ব্যবহার করতে পারেন।
- তথ্য মিলানো: প্রথম লাইনে কিছু তথ্য সংরক্ষণ করে পরবর্তী লাইনে সেই তথ্যের সাথে মিলিয়ে কাজ করা।
সারাংশ
Sed Buffers এবং Hold Space হল Sed এর অত্যন্ত শক্তিশালী বৈশিষ্ট্য যা আপনাকে ইনপুট ডেটার মধ্যে একটি প্যাটার্ন খুঁজে সেটি একটি বাফারে (যেমন Pattern Space অথবা Hold Space) সংরক্ষণ করতে সহায়তা করে। এই দুটি বাফারের মধ্যে তথ্য স্থানান্তর এবং একে অপরের সাথে বিনিময়ের মাধ্যমে আপনি আরো জটিল টেক্সট প্রক্রিয়াকরণ করতে পারবেন। এটি বিশেষভাবে তখন কাজে আসে যখন আপনি একাধিক লাইনের উপর কাজ করতে চান বা তথ্য সংরক্ষণ এবং পরে ব্যবহার করতে চান।
Pattern Space এবং Hold Space হলো Sed (Stream Editor) এর দুটি গুরুত্বপূর্ণ ধারণা, যা Sed এর কার্যক্রমকে আরও শক্তিশালী এবং নমনীয় করে তোলে। এগুলি হল দুটি আলাদা স্থান যেখানে Sed ডেটা রাখে এবং যে স্থানে পরিবর্তন বা সংরক্ষণ করা যায়। এই দুটি স্পেসের মধ্যে পার্থক্য ও তাদের ব্যবহারের ধরন বুঝে Sed কমান্ড আরও উন্নতভাবে ব্যবহার করা যায়।
1. Pattern Space
Pattern Space হল Sed এর মূল জায়গা যেখানে নির্দিষ্ট লাইন বা প্যাটার্ন সংরক্ষিত হয় এবং যেখান থেকে Sed কাজ শুরু হয়। Sed যখন একটি লাইন গ্রহণ করে (এটি যেটি পাস করা হয়), সেটি প্রথমে Pattern Space এ রাখা হয় এবং তারপর সেই লাইনটির উপরে সব কমান্ড কার্যকর হয়।
Pattern Space এর কাজ:
- Pattern Space এ বর্তমান লাইন রাখা হয়, এবং এই লাইনটি Sed এর দ্বারা পরিবর্তন বা মুছে ফেলার জন্য ব্যবহৃত হয়।
- যখন Sed একটি লাইন গ্রহণ করে, সেটি প্রথমে Pattern Space এ চলে আসে, তারপর সেখানে যা কিছু করা হয় (যেমন রিপ্লেসমেন্ট বা ডিলিট), তা এই স্পেসে করা হয়।
- সাধারণভাবে Sed এর সমস্ত কমান্ড Pattern Space তে কার্যকর হয়।
উদাহরণ:
sed 's/cat/dog/' file.txtএটি file.txt এর প্রতিটি লাইনকে Pattern Space তে নিয়ে আসবে এবং "cat" কে "dog"-এ প্রতিস্থাপন করবে।
2. Hold Space
Hold Space হলো Sed এর আরেকটি স্পেস যেখানে আপনি অতিরিক্ত ডেটা সংরক্ষণ করতে পারেন, এবং এটি Pattern Space থেকে আলাদা। Hold Space মূলত একটি অস্থায়ী মেমরি স্পেস, যেখানে আপনি কোন তথ্য সংরক্ষণ করতে পারেন এবং পরবর্তীতে সেটি Pattern Space এর সাথে তুলনা বা ব্যবহার করতে পারেন।
Hold Space এর কাজ:
- Hold Space তে Sed এর মাধ্যমে সংরক্ষিত ডেটা রাখা হয়, এবং এটি Pattern Space থেকে আলাদা থাকে।
- আপনি Pattern Space থেকে তথ্য Hold Space তে কপি বা মুভ করতে পারেন, এবং পরে সেই ডেটা আবার Pattern Space তে ফেরত আনতে পারেন।
- আপনি Hold Space এ তথ্য সংরক্ষণ করতে এবং পরবর্তীতে সেই তথ্য ব্যবহার করতে পারেন, যেমন আগের লাইন বা অন্য কিছু অস্থায়ীভাবে রাখার জন্য।
Pattern Space এবং Hold Space এর মধ্যে পার্থক্য:
- Pattern Space তে বর্তমানে কাজ করা লাইন থাকে, যখন Hold Space তে অতিরিক্ত বা অস্থায়ী তথ্য রাখা হয়।
- Pattern Space তে যে পরিবর্তনগুলি করা হয় তা সরাসরি আউটপুটে চলে আসে, কিন্তু Hold Space তে সংরক্ষিত তথ্য আউটপুটে আসে না, যতক্ষণ না আপনি সেটি Pattern Space তে ফেরত আনেন বা অন্যভাবে ব্যবহৃত না করেন।
Hold Space এ ডেটা সংরক্ষণ ও ব্যবহার:
hকমান্ড: Hold Space তে বর্তমান Pattern Space এর কপি রাখে।Hকমান্ড: Pattern Space তে বর্তমান Hold Space এর ডেটা অ্যাপেন্ড করে।gকমান্ড: Hold Space এর ডেটা Pattern Space তে ফিরিয়ে আনে।Gকমান্ড: Pattern Space এর ডেটা Hold Space তে যোগ করে।
উদাহরণ:
ধরা যাক, আপনি প্রথমে একটি লাইনকে পরিবর্তন করছেন এবং তারপর সেটি Hold Space তে সংরক্ষণ করে অন্য একটি লাইনটির সাথে যোগ করতে চান। আপনি এটি h, g কমান্ডের মাধ্যমে করতে পারেন।
sed 's/cat/dog/; h; s/fox/bird/; g' file.txtএখানে:
- প্রথমে "cat" কে "dog"-এ পরিবর্তন করা হচ্ছে।
- তারপর
hকমান্ড দ্বারা সেই পরিবর্তিত লাইন Hold Space এ সংরক্ষণ করা হচ্ছে। - এরপর
foxকেbirdএ পরিবর্তন করা হচ্ছে, এবংgকমান্ডের মাধ্যমে Hold Space থেকে সংরক্ষিত ডেটা আবার Pattern Space তে ফেরত আনা হচ্ছে।
এটি file.txt ফাইলের প্রতিটি লাইন প্রথমে "cat" থেকে "dog"-এ পরিবর্তন করবে, তারপর Hold Space তে সেই লাইনটি সংরক্ষণ করবে এবং পরবর্তীতে "fox" শব্দটিকে "bird"-এ পরিবর্তন করবে।
Pattern Space এবং Hold Space এর সাথে কাজ করার আরও কিছু উদাহরণ
h এবং g ব্যবহার করে উদাহরণ:
sed '1h; 2s/dog/cat/; 2g; 3s/fish/elephant/' file.txtএখানে:
- প্রথম লাইনের কপি Hold Space তে সংরক্ষণ করা হবে (
1h), - দ্বিতীয় লাইনে "dog" কে "cat" এ পরিবর্তন করা হবে, এবং Hold Space থেকে সেই লাইনটি Pattern Space তে ফিরিয়ে আনা হবে (
2g), - তৃতীয় লাইনে "fish" কে "elephant" এ পরিবর্তন করা হবে।
H এবং G ব্যবহার:
sed '1H; 2H; 2G; 3s/fish/elephant/' file.txtএখানে:
- প্রথম দুটি লাইন Hold Space তে অ্যাপেন্ড করা হবে (
1Hএবং2H), - দ্বিতীয় লাইনটি Hold Space থেকে Pattern Space তে ফেরত আনা হবে (
2G), - তৃতীয় লাইনে "fish" শব্দটি "elephant"-এ পরিবর্তন করা হবে।
সারাংশ
Pattern Space এবং Hold Space Sed এর দুটি গুরুত্বপূর্ণ ধারণা যা আপনাকে আরও উন্নত এবং শক্তিশালী টেক্সট প্রক্রিয়াকরণ করতে সাহায্য করে। Pattern Space তে বর্তমান কাজ করা লাইন থাকে এবং এখানে পরিবর্তন করা হয়, আর Hold Space তে অতিরিক্ত বা অস্থায়ী তথ্য সংরক্ষণ করা হয় যেটি পরে Pattern Space তে ফিরিয়ে আনা যেতে পারে। এগুলি একে অপরের সাথে সহযোগিতা করে complex টেক্সট পরিবর্তন বা প্রক্রিয়াকরণ করতে ব্যবহৃত হয়।
Sed (Stream Editor) এ h, H, g, এবং G কমান্ডগুলি ব্যবহার করা হয় hold space এবং pattern space এর মধ্যে ডেটা স্থানান্তর এবং ম্যানিপুলেশনের জন্য। এগুলি একাধিক লাইনের মধ্যে তথ্য রাখার এবং বিভিন্ন অংশকে একত্রিত করার জন্য অত্যন্ত কার্যকর।
Sed এ h, H, g, এবং G কমান্ডের ব্যবহার
1. h (Hold space to Pattern space)
- ব্যবহার:
hকমান্ডটি hold space (এই স্যাম্পলটি ডেটা সংরক্ষণের জন্য ব্যবহার হয়) থেকে pattern space (যেখানে বর্তমান লাইনের তথ্য থাকে) এ ডেটা কপি করে নিয়ে আসে। - অর্থ: এটি বর্তমান লাইনের কপি hold space থেকে pattern space এ রাখে।
সিনট্যাক্স:
hউদাহরণ:
sed '1h; 2h; 3h; G' file.txtএই কমান্ডটি file.txt এর প্রথম তিনটি লাইনের কপি hold space এ রাখবে, এবং শেষ লাইন (যে লাইনটি G দ্বারা আনা হবে) সেই ডেটাকে আউটপুটে যুক্ত করবে।
2. H (Hold space to Pattern space, Appending)
- ব্যবহার:
Hকমান্ডটি pattern space (বর্তমান লাইন) এর ডেটা hold space এ যোগ করে রাখে (append)। - অর্থ: এটি pattern space এর ডেটাকে hold space এ সংযুক্ত করে।
সিনট্যাক্স:
Hউদাহরণ:
sed '1H; 2H; 3H; G' file.txtএটি file.txt এর প্রথম তিনটি লাইনের ডেটাকে hold space এ যোগ করে রাখবে এবং G দ্বারা hold space এর সমস্ত ডেটা আউটপুটে নিয়ে আসবে।
3. g (Pattern space to Hold space)
- ব্যবহার:
gকমান্ডটি pattern space (বর্তমান লাইনের ডেটা) থেকে hold space (সংরক্ষিত ডেটা) এর মধ্যে ডেটা কপি করে নিয়ে আসে। - অর্থ: এটি pattern space এর ডেটাকে hold space এ স্থাপন করে।
সিনট্যাক্স:
gউদাহরণ:
sed '1h; 2g; 3g' file.txtএই কমান্ডটি:
- প্রথম লাইনের ডেটা hold space এ সংরক্ষণ করবে,
- দ্বিতীয় এবং তৃতীয় লাইনের ডেটা hold space থেকে pattern space এ এনে আউটপুটে যুক্ত করবে।
4. G (Hold space to Pattern space, Appending)
- ব্যবহার:
Gকমান্ডটি hold space এর ডেটাকে pattern space এর শেষে যোগ করে দেয় (append)। - অর্থ: এটি hold space এর ডেটাকে pattern space এ যোগ করে, যাতে আপনি hold space এবং pattern space এর ডেটা একসাথে আউটপুটে পেতে পারেন।
সিনট্যাক্স:
Gউদাহরণ:
sed '1h; 2h; G' file.txtএটি:
- প্রথম লাইনের ডেটা hold space এ রাখবে,
- দ্বিতীয় লাইনের ডেটা hold space থেকে pattern space এ এনে আউটপুটে যুক্ত করবে, এবং পরবর্তীতে hold space এর ডেটা আউটপুটে যোগ করবে।
Chained Example Using h, H, g, and G
ধরা যাক, আপনি একটি ফাইলে প্রথম দুটি লাইনের মধ্যে ডেটা সংরক্ষণ করতে চান এবং পরবর্তী লাইনগুলির সঙ্গে মিশিয়ে আউটপুটে প্রদর্শন করতে চান:
sed '1h; 2H; 3g; G' file.txtএটি:
- প্রথম লাইনের ডেটা hold space এ রাখবে,
- দ্বিতীয় লাইনের ডেটা hold space এ যোগ করবে,
- তৃতীয় লাইনের ডেটা hold space থেকে pattern space এ এনে আউটপুটে যুক্ত করবে,
- তারপর hold space এর ডেটাকে pattern space এর শেষে যোগ করে আউটপুটে প্রদর্শন করবে।
Summary of h, H, g, and G Commands
h: Pattern space এর ডেটা hold space এ কপি করে নিয়ে আসে।H: Pattern space এর ডেটা hold space এ যোগ করে রাখে।g: Pattern space এর ডেটা hold space থেকে কপি করে নিয়ে আসে।G: Hold space এর ডেটা pattern space এ যোগ করে।
এই কমান্ডগুলো আপনাকে Sed স্ক্রিপ্টে একাধিক লাইনের মধ্যে ডেটা ম্যানিপুলেশন করতে সাহায্য করে এবং জটিল টেক্সট প্রক্রিয়াকরণ সহজ করে তোলে।
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-এর জন্য অত্যন্ত সহায়ক।
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