Sed (Stream Editor) এর b (branch) এবং t (test) কমান্ডগুলি conditional branching এবং looping এর জন্য ব্যবহৃত হয়। এগুলি Sed স্ক্রিপ্টে লজিক্যাল ফ্লো নিয়ন্ত্রণ করতে ব্যবহৃত হয়, যেখানে আপনি নির্দিষ্ট শর্তের ভিত্তিতে কমান্ডগুলি চালানোর জন্য শাখা তৈরি করতে পারেন।
1. b (branch) কমান্ড
Sed এ b (branch) কমান্ডটি একটি jump বা branch তৈরি করে, অর্থাৎ এটি Sed স্ক্রিপ্টে একটি নির্দিষ্ট জায়গায় চলে যেতে নির্দেশ দেয়। আপনি এটি ব্যবহার করে একটি নির্দিষ্ট লেবেলে চলে যেতে পারেন।
সিনট্যাক্স:
b labelএখানে:
label: এটি একটি লেবেল যা Sed স্ক্রিপ্টের মধ্যে সংজ্ঞায়িত করা হয়। এটিbকমান্ড দ্বারা জাম্প করার স্থানের প্রতিনিধিত্ব করে।
b কমান্ডের উদাহরণ:
sed '1b skip; 2s/cat/dog/' file.txtএটি:
1b skip: প্রথম লাইনটি পড়ার পর, Sedskipলেবেলে চলে যাবে এবং কোনো পরিবর্তন করবে না।2s/cat/dog/: দ্বিতীয় লাইনে "cat" শব্দকে "dog" দিয়ে প্রতিস্থাপন করবে।
লেবেল এবং শাখা ব্যবহারের মাধ্যমে আপনি স্ক্রিপ্টের মধ্যে যেকোনো অংশে জাম্প করতে পারেন।
অন্য উদাহরণ:
sed '3b end; 4s/hello/world/' file.txtএটি:
3b end: তৃতীয় লাইনের পরে Sedendলেবেলে চলে যাবে।4s/hello/world/: চতুর্থ লাইনে "hello" শব্দটিকে "world"-এ প্রতিস্থাপন করবে।
2. t (test) কমান্ড
t (test) কমান্ডটি একটি শর্তাধীন জাম্প বা conditional branching তৈরি করে। এটি s/// (substitution) কমান্ডের পরে ব্যবহৃত হয়, যা পরীক্ষার শর্ত হিসেবে কাজ করে। যদি s/// কমান্ডে কোনো পরিবর্তন হয় (অর্থাৎ, প্যাটার্ন ম্যাচ করে এবং সাফল্য অর্জিত হয়), তবে t কমান্ডটি নির্দিষ্ট লেবেলে চলে যাবে।
সিনট্যাক্স:
t labelএখানে:
label: একটি লেবেল যেখানে আপনিtকমান্ড দ্বারা যেতে চান, যদি পূর্ববর্তীs///কমান্ডটি সফল হয়।
t কমান্ডের উদাহরণ:
sed 's/cat/dog/; t skip; s/dog/rabbit/' file.txtএটি:
- প্রথমে
s/cat/dog/কমান্ড চালাবে এবং "cat" শব্দটি "dog" দিয়ে প্রতিস্থাপন করবে। - যদি প্রথম কমান্ডে কোনো পরিবর্তন হয় (অর্থাৎ, "cat" শব্দটি পাওয়া যায়), তাহলে
t skipকমান্ডটি চলে যাবে এবং দ্বিতীয় কমান্ডটি (যথাs/dog/rabbit/) কার্যকর হবে। - যদি প্রথম কমান্ডে কোনো পরিবর্তন না ঘটে, তখন দ্বিতীয় কমান্ড (যথা
s/dog/rabbit/) চলবে না।
অন্য উদাহরণ:
sed 's/apple/banana/; t found; s/mango/peach/' file.txtএটি:
- প্রথমে
s/apple/banana/কমান্ডে "apple" শব্দটি "banana"-এ পরিবর্তিত হবে, যদি এটি থাকে। - যদি "apple" শব্দটি থাকে এবং পরিবর্তন হয়, তাহলে
t foundলেবেলে চলে যাবে এবং দ্বিতীয় কমান্ডটি চলবে না। - যদি প্রথম কমান্ডে কোনো পরিবর্তন না ঘটে, তবে
s/mango/peach/কমান্ড কার্যকর হবে।
b এবং t কমান্ডের ব্যবহারের সুবিধা
b(branch) কমান্ডটি আপনাকে কোনো নির্দিষ্ট স্থানে জাম্প করতে সাহায্য করে, যেটি আপনি পূর্বে একটি লেবেল দিয়ে উল্লেখ করেছেন।t(test) কমান্ডটিs///কমান্ডের পরবর্তী শর্তাধীন কার্যকলাপ পরিচালনা করে, যা কেবল তখন কার্যকর হবে যদিs///কমান্ডটি সফল হয় এবং কোনো পরিবর্তন ঘটে।
এগুলি Sed স্ক্রিপ্টে লজিক্যাল ফ্লো নিয়ন্ত্রণ করার জন্য ব্যবহৃত হয় এবং আপনার স্ক্রিপ্টে জটিল শর্তযুক্ত পরিবর্তন বা লুপিং প্রক্রিয়া যোগ করতে সাহায্য করে।
Read more