Sed (Stream Editor) ব্যবহার করে Conditional Execution (শর্তাধীন কার্য সম্পাদন) এবং Pattern Matching (প্যাটার্ন মেচিং) করা সম্ভব। Sed এ প্যাটার্ন মেচিং এবং শর্তাধীন কার্য সম্পাদন বিভিন্ন প্রক্রিয়া অনুযায়ী টেক্সট পরিবর্তন এবং আউটপুট নিয়ন্ত্রণ করতে সাহায্য করে। এগুলি মূলত শর্তসাপেক্ষভাবে নির্দিষ্ট লাইনে পরিবর্তন বা কার্য সম্পাদন করার জন্য ব্যবহৃত হয়।
Sed এ Conditional Execution (শর্তাধীন কার্য সম্পাদন)
Sed এর মধ্যে শর্তসাপেক্ষ কার্য সম্পাদন করতে হলে সাধারণত if-else টাইপের চেইনড কমান্ড বা t (test) কমান্ড ব্যবহার করা হয়। এই কমান্ডগুলির মাধ্যমে আপনি কোনো প্যাটার্ন ম্যাচ হলে একটি নির্দিষ্ট কাজ চালাতে পারেন এবং ম্যাচ না হলে অন্য একটি কাজ চালাতে পারেন।
t (test) কমান্ড
- ব্যবহার:
tকমান্ডটি একটি test কমান্ড হিসেবে কাজ করে। এটি pattern space এ কোনো পরিবর্তন হলে পরবর্তী কমান্ড চালাবে, অন্যথায় চালাবে না। সিনট্যাক্স:
sed '/pattern/ t command'এখানে:
/pattern/: যদি প্যাটার্ন মেলে।t: test কমান্ড, যা কোনো পরিবর্তন হলে পরবর্তী কমান্ড চালাবে।
উদাহরণ 1: একটি প্যাটার্ন পাওয়া গেলে অন্য প্যাটার্ন প্রতিস্থাপন
যদি "cat" শব্দটি পাওয়া যায়, তবে সেটি "dog" দিয়ে প্রতিস্থাপন করা হবে, আর যদি না পাওয়া যায়, তবে "fish" শব্দটি প্রতিস্থাপন হবে।
sed '/cat/ t; s/fish/seafood/' file.txtএটি:
/cat/ tদ্বারা "cat" যদি পাওয়া যায়, তাহলে পরবর্তী কমান্ড (প্রতিস্থাপন) চালাবে।- যদি "cat" না পাওয়া যায়, তবে "fish" শব্দটি "seafood" দিয়ে প্রতিস্থাপন করবে।
b (branch) কমান্ড
- ব্যবহার:
bকমান্ডটি ব্যবহার করে আপনি branch করতে পারেন, অর্থাৎ কোনো শর্ত পূর্ণ হলে একটি নির্দিষ্ট অংশে চলে যেতে পারেন। সিনট্যাক্স:
sed '/pattern/ b label'
উদাহরণ 2: "dog" শব্দটি পাওয়া গেলে লেবেল skip এ চলে যাওয়া
sed '/dog/ b skip; s/cat/dog/g; :skip' file.txtএটি:
- যদি "dog" পাওয়া যায়, তাহলে
b skipকমান্ডটি skip লেবেলে চলে যাবে। - অন্যথায়, "cat" শব্দটিকে "dog"-এ প্রতিস্থাপন করবে।
Sed এ Pattern Matching (প্যাটার্ন মেচিং)
Sed এ Pattern Matching মূলত Regular Expressions (রেগুলার এক্সপ্রেশন) ব্যবহার করে করা হয়। এটি টেক্সটের নির্দিষ্ট প্যাটার্ন খুঁজে বের করার প্রক্রিয়া, যা টেক্সট পরিবর্তন, মুছে ফেলা বা অন্য কোনো প্রক্রিয়া চালানোর জন্য ব্যবহৃত হয়।
Pattern Matching এর মৌলিক ব্যবহার
- Pattern Matching করতে
/pattern/স্যিনট্যাক্স ব্যবহার করা হয়।
সিনট্যাক্স:
sed '/pattern/ command' file.txtএখানে:
/pattern/: প্যাটার্ন বা রেগুলার এক্সপ্রেশন যা আপনি খুঁজতে চান।command: প্যাটার্ন মিলে গেলে যে কমান্ডটি চালাতে চান।
উদাহরণ 3: "cat" প্যাটার্ন পাওয়া গেলে লাইন প্রদর্শন
sed -n '/cat/p' file.txtএটি file.txt ফাইলের মধ্যে "cat" প্যাটার্ন মেলে এমন লাইনগুলো প্রিন্ট করবে।
উদাহরণ 4: একটি নির্দিষ্ট প্যাটার্নের সাথে শুরু হওয়া লাইন মুছে ফেলা
ধরা যাক, আপনি যদি "dog" দিয়ে শুরু হওয়া লাইনগুলো মুছে ফেলতে চান, তাহলে:
sed '/^dog/d' file.txtএটি file.txt থেকে "dog" দিয়ে শুরু হওয়া সব লাইন মুছে ফেলবে।
Advanced Pattern Matching with Regular Expressions
Sed Regular Expressions সমর্থন করে, যা আপনাকে আরও জটিল প্যাটার্ন খুঁজে বের করতে সাহায্য করে।
উদাহরণ 5: রেগুলার এক্সপ্রেশন ব্যবহার করে প্যাটার্ন মেচিং
.(Dot): এটি যেকোনো একক চরিত্রের সাথে মিলাবে।sed '/c.t/p' file.txt*(Asterisk): এটি পূর্ববর্তী চরিত্রের শূন্য বা তার বেশি পুনরাবৃত্তি মিলাবে।sed '/ca*t/p' file.txt^(Caret): এটি লাইনের শুরুতে প্যাটার্ন মিলাবে।sed '/^cat/p' file.txt$(Dollar): এটি লাইনের শেষে প্যাটার্ন মিলাবে।sed '/dog$/p' file.txt[](Square Brackets): এটি নির্দিষ্ট এক বা একাধিক চরিত্রের মধ্যে মিলাবে।sed '/[aeiou]/p' file.txt
উদাহরণ 6: OR (Alternation) ব্যবহার করে প্যাটার্ন মেচিং
যদি আপনি দুটি প্যাটার্নের মধ্যে মিল খুঁজতে চান, তবে | (OR) অপারেটর ব্যবহার করতে পারেন:
sed '/cat\|dog/p' file.txtএটি "cat" অথবা "dog" প্যাটার্নের সাথে মিলে এমন সব লাইন প্রিন্ট করবে।
Conclusion
- Conditional Execution: Sed এ
tএবংbকমান্ড ব্যবহার করে আপনি শর্ত পূর্ণ হলে নির্দিষ্ট কমান্ড বা অংশে যেতে পারেন। - Pattern Matching: Sed এ Regular Expressions ব্যবহার করে প্যাটার্ন মেচিং করা হয়, যা আপনাকে খুবই শক্তিশালী টেক্সট ম্যানিপুলেশন করার সুযোগ দেয়।
/pattern/স্যিনট্যাক্স ব্যবহার করে আপনি যেকোনো প্যাটার্ন বা শর্ত অনুসারে টেক্সট পরিবর্তন বা মুছে ফেলতে পারেন।
Read more