Sed (Stream Editor) দিয়ে line reordering এবং rearrangement করা সম্ভব, যদিও Sed মূলত একটি stream editor, যা লাইনের মধ্যে পরিবর্তন করার জন্য ডিজাইন করা হয়েছে। কিন্তু কিছু বিশেষ কমান্ড এবং কৌশল ব্যবহার করে আপনি lines এর reordering বা arrangement করতে পারেন। এখানে কিছু line reordering এবং rearrangement techniques দেওয়া হল যা Sed-এ করা যেতে পারে।
1. Line Swapping (লাইনের পরিবর্তন)
Sed দিয়ে আপনি দুটি লাইনের স্থান পরিবর্তন করতে পারেন। ধরুন, যদি আপনি প্রথম এবং দ্বিতীয় লাইনের স্থান পরিবর্তন করতে চান, তবে কিছু বিশেষ কমান্ডের মাধ্যমে এটি করা যেতে পারে।
উদাহরণ: দুটি লাইন পরিবর্তন করা
ধরা যাক, আপনি প্রথম দুটি লাইন পরস্পরের সাথে পাল্টাতে চান:
sed '1h; 2H; 1!H; $!d; g; s/\n/ /g' file.txtএটি:
1h: প্রথম লাইনের তথ্য Hold Space-এ কপি করবে।2H: দ্বিতীয় লাইনের তথ্য Hold Space-এ অ্যাপেন্ড করবে।1!H: পরবর্তী লাইনের মধ্যে প্রথম লাইনের পরিবর্তন করবে।$!d: শেষ লাইন ছাড়া বাকি সব লাইন মুছে ফেলবে।g: Hold Space থেকে তথ্য নিয়ে Pattern Space-এ রাখবে।s/\n/ /g: সমস্ত newline চরিত্রগুলোকে একসাথে যুক্ত করবে।
একাধিক লাইন বদলানোর উদাহরণ:
আপনি যদি পরপর একাধিক লাইনের স্থান পরিবর্তন করতে চান, তবে এটি একটু জটিল হতে পারে, কিন্তু আপনি কিছু স্ক্রিপ্ট তৈরি করে এটি করতে পারেন। এই প্রক্রিয়ায় আপনি h, g, এবং n কমান্ডের সহায়তা নিতে পারেন।
2. Lines Rearranging (লাইনের পুনর্বিন্যাস)
Sed-এ লাইনের পুনর্বিন্যাস করার জন্য কিছু কৌশল প্রয়োগ করা যায়। ধরুন, আপনি একটি ফাইলে যেসব লাইনে "cat" রয়েছে তাদের সমস্ত লাইন গুলি উপরের দিকে নিয়ে যেতে চান।
উদাহরণ: প্যাটার্নের সাথে মিল থাকা লাইনের স্থান পরিবর্তন করা
sed '/cat/{h;d};$!H;$!d;g' file.txtএটি:
/cat/{h;d}: যেসব লাইন "cat" শব্দের সাথে মিলবে, সেগুলোর তথ্য Hold Space-এ কপি হবে এবং তারপর মুছে ফেলা হবে।$!H: বাকি লাইনগুলোর মধ্যে যেগুলোর সাথে মিল নেই, সেগুলো Hold Space-এ যুক্ত হবে।$!d: বাকি সমস্ত লাইন মুছে ফেলবে।g: Hold Space থেকে তথ্য Pattern Space-এ নিয়ে আসবে।
এটি সমস্ত "cat"-সংক্রান্ত লাইনগুলোকে উল্লিখিত জায়গায় স্থানান্তরিত করবে।
3. Line Numbering (লাইনে নম্বর যোগ করা)
Sed দিয়ে আপনি একটি ফাইলের সব লাইনে নম্বর যোগ করতে পারেন। এই কৌশলটি পুনর্বিন্যাসের জন্য বা line reordering এর পূর্বে ব্যবহার করা যেতে পারে।
উদাহরণ: লাইনে নম্বর যোগ করা
sed = file.txt | sed 'N;s/\n/\t/'এটি:
- প্রথম কমান্ডটি
=Sed কমান্ড ব্যবহার করে লাইনের নম্বর প্রদান করবে। - দ্বিতীয় কমান্ডটি
Nপ্যাটার্নটি ব্যবহার করে নম্বর এবং লাইনটিকে একত্রে যোগ করবে এবং\nপরিবর্তন করে\t(tab) এর মধ্যে স্থাপন করবে।
4. Multiple Lines Rearranging (একাধিক লাইনের পুনর্বিন্যাস)
কখনো কখনো আপনি একাধিক লাইনের মধ্যে সুনির্দিষ্ট প্রক্রিয়া প্রয়োগ করতে চান, যেমন প্রথম তিনটি লাইনের জন্য কিছু পরিবর্তন করে তাদের পুনর্বিন্যাস করা।
উদাহরণ: প্রথম তিনটি লাইনের পুনর্বিন্যাস করা
sed '1,3{h;d};$!H;$!d;g' file.txtএটি:
1,3{h;d}: প্রথম তিনটি লাইনকে Hold Space-এ পাঠাবে এবং মুছে ফেলবে।$!H: বাকি লাইনের মধ্যে Hold Space-এ অ্যাপেন্ড হবে।$!d: বাকি সমস্ত লাইন মুছে ফেলবে।g: Hold Space থেকে তথ্য Pattern Space-এ নিয়ে আসবে।
5. Sorting (লাইনের সাজানো)
Sed নিজে সরাসরি sorting সাপোর্ট করে না, তবে sort কমান্ডের সাথে Sed ব্যবহার করে লাইনের সাজানো করা যেতে পারে।
উদাহরণ: Sort এর মাধ্যমে লাইনের সাজানো
sort file.txt | sed 's/old_pattern/new_pattern/g'এটি:
sort: ফাইলের লাইনগুলো সাজিয়ে দিবে।sed: সাজানো লাইনগুলোর মধ্যে একটি নির্দিষ্ট প্যাটার্ন খুঁজে তা পরিবর্তন করবে।
6. Reverse Line Order (লাইনের আদেশ বিপরীত করা)
Sed ব্যবহার করে একেবারে সরাসরি reverse line order করা সম্ভব নয়, তবে আপনি tac বা awk এর মাধ্যমে এবং Sed ব্যবহার করে এই কাজ করতে পারেন। উদাহরণস্বরূপ:
tac file.txt | sed 's/old_pattern/new_pattern/g'এটি:
tac: ফাইলের লাইনগুলোর আদেশ বিপরীত করবে।sed: তারপর সেই লাইনগুলোর মধ্যে একটি নির্দিষ্ট প্যাটার্ন খুঁজে তা পরিবর্তন করবে।
Conclusion
Sed দিয়ে line reordering এবং rearrangement করতে কিছু বিশেষ কৌশল ও কমান্ড ব্যবহার করা যায়। Sed এর মাধ্যমে আপনি:
- Pattern Matching ব্যবহার করে লাইনের স্থান পরিবর্তন করতে পারেন।
h,g,n, এবংpকমান্ড ব্যবহার করে line swapping বা reordering করতে পারেন।tacএবংawkএর সাহায্যে line order পরিবর্তন করতে পারেন।- একটি ফাইলে line numbering যোগ করা এবং লাইনের পুনর্বিন্যাসে সহায়তা করতে Sed ব্যবহার করা যেতে পারে।
Read more