Sed (Stream Editor) এ Addressing হলো একটি বিশেষ প্রক্রিয়া যার মাধ্যমে আপনি একটি নির্দিষ্ট লাইন বা লাইন রেঞ্জে Sed কমান্ড কার্যকর করতে পারেন। addressing এর মাধ্যমে আপনি নির্দিষ্ট লাইনে বা লাইনগুলোর উপর Sed এর কাজ পরিচালনা করতে পারেন, যেমন টেক্সট প্রতিস্থাপন, লাইন মুছে ফেলা, বা নতুন লাইন যোগ করা। Sed এ addressing দুটি প্রধানভাবে করা হয়: সুনির্দিষ্ট লাইন নম্বর দিয়ে এবং প্যাটার্ন দিয়ে।
Sed এ Addressing এর বিভিন্ন পদ্ধতি
1. সুনির্দিষ্ট লাইন নম্বর দিয়ে Addressing
Sed এ আপনি সরাসরি একটি নির্দিষ্ট লাইনের নম্বর ব্যবহার করে কাজ করতে পারেন। উদাহরণস্বরূপ, যদি আপনি ফাইলের দ্বিতীয় লাইনে কিছু পরিবর্তন করতে চান, তবে আপনি সরাসরি সেই লাইন নম্বরটি উল্লেখ করতে পারেন।
সিনট্যাক্স:
sed 'line_number command' file.txtউদাহরণ:
sed '2s/cat/dog/' file.txtএটি file.txt ফাইলে দ্বিতীয় লাইনে "cat" শব্দটি "dog"-এ প্রতিস্থাপন করবে।
2. লাইন রেঞ্জ দিয়ে Addressing
Sed এর মাধ্যমে আপনি লাইন রেঞ্জ ব্যবহার করে একাধিক লাইনেও পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, আপনি যদি দ্বিতীয় থেকে পঞ্চম লাইনের মধ্যে পরিবর্তন করতে চান, তবে লাইন রেঞ্জ ব্যবহার করা হয়।
সিনট্যাক্স:
sed 'start_line,end_line command' file.txtউদাহরণ:
sed '2,5s/cat/dog/' file.txtএটি file.txt ফাইলে দ্বিতীয় থেকে পঞ্চম লাইনে "cat" শব্দটি "dog"-এ প্রতিস্থাপন করবে।
3. বিকল্প প্যাটার্ন দিয়ে Addressing
Sed এ আপনি একটি নির্দিষ্ট প্যাটার্ন বা শব্দের উপর ভিত্তি করে পরিবর্তন করতে পারেন, অর্থাৎ কোনো লাইন বা প্যাটার্নটি খুঁজে তার উপর Sed কমান্ড প্রয়োগ করা হয়।
সিনট্যাক্স:
sed '/pattern/command' file.txtউদাহরণ:
sed '/cat/s/cat/dog/' file.txtএটি file.txt ফাইলের যেকোনো লাইনে, যেখানে "cat" শব্দটি আছে, সেখানে "cat"-কে "dog"-এ প্রতিস্থাপন করবে।
4. বিকল্প প্যাটার্ন রেঞ্জ দিয়ে Addressing
আপনি যদি কোনো প্যাটার্নের মধ্যে লাইন রেঞ্জ দিতে চান, তাও সম্ভব। অর্থাৎ একটি নির্দিষ্ট প্যাটার্ন থেকে শুরু হয়ে অন্য প্যাটার্নে গিয়ে কমান্ড কার্যকর হবে।
সিনট্যাক্স:
sed '/start_pattern/,/end_pattern/command' file.txtউদাহরণ:
sed '/start/,/end/s/cat/dog/' file.txtএটি file.txt ফাইলে "start" এবং "end" প্যাটার্নের মধ্যে সমস্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে।
5. প্রথম বা শেষ লাইন দিয়ে Addressing
Sed এ আপনি প্রথম বা শেষ লাইন দিয়ে কাজ করতে পারেন। উদাহরণস্বরূপ, আপনি যদি প্রথম লাইনটি মুছে ফেলতে চান, তাহলে 1 ব্যবহার করবেন এবং যদি শেষ লাইনে কিছু পরিবর্তন করতে চান, তবে $ ব্যবহার করা হয়।
সিনট্যাক্স:
sed '1 command' file.txt # প্রথম লাইন
sed '$ command' file.txt # শেষ লাইনউদাহরণ:
sed '1d' file.txtএটি file.txt ফাইলের প্রথম লাইনটি মুছে ফেলবে।
sed '$d' file.txtএটি file.txt ফাইলের শেষ লাইনটি মুছে ফেলবে।
6. Multiple Addressing (একাধিক addressing)
Sed এ আপনি একাধিক addressing ব্যবহার করে বিভিন্ন লাইন বা প্যাটার্নে কমান্ড প্রয়োগ করতে পারেন।
সিনট্যাক্স:
sed 'address1 command; address2 command' file.txtউদাহরণ:
sed '1s/cat/dog/; 3s/dog/bird/' file.txtএটি file.txt ফাইলের প্রথম লাইনে "cat"-কে "dog"-এ এবং তৃতীয় লাইনে "dog"-কে "bird"-এ প্রতিস্থাপন করবে।
Sed Addressing এর ব্যবহার ও প্রয়োগ
- সুনির্দিষ্ট লাইন নম্বর দিয়ে পরিবর্তন:
Sed ব্যবহার করে কোনো নির্দিষ্ট লাইনে পরিবর্তন করার জন্য আপনি সেই লাইনের নম্বর উল্লেখ করতে পারেন। যেমন, কোনো ফাইলে দ্বিতীয় লাইনে কিছু পরিবর্তন করতে হলে সেই লাইন নম্বর ব্যবহার করবেন। - প্যাটার্নের মাধ্যমে Addressing:
যখন আপনি শুধু সেই সব লাইনগুলোর মধ্যে পরিবর্তন করতে চান যেখানে একটি নির্দিষ্ট প্যাটার্ন বা শব্দ আছে, তখন আপনি সেই প্যাটার্ন ব্যবহার করে addressing করবেন। এটি খুবই কার্যকর যখন আপনাকে বড় ফাইল বা ডেটার মধ্যে একটি নির্দিষ্ট শব্দ বা তথ্য খুঁজে সেটি পরিবর্তন করতে হয়। - লাইন রেঞ্জ দিয়ে Addressing:
আপনি যদি কোনো ফাইলের একটি নির্দিষ্ট রেঞ্জে পরিবর্তন করতে চান, তাহলে আপনি লাইন রেঞ্জ ব্যবহার করতে পারেন। এটি সাধারণত ফাইলের মাঝে কোনো নির্দিষ্ট জায়গায় বড় পরিবর্তন করতে ব্যবহৃত হয়।
সারাংশ
Sed এ Addressing হলো একটি শক্তিশালী ফিচার যা আপনাকে নির্দিষ্ট লাইন বা প্যাটার্নের মাধ্যমে পরিবর্তন করতে সাহায্য করে। আপনি সুনির্দিষ্ট লাইন নম্বর, লাইন রেঞ্জ বা প্যাটার্ন ব্যবহার করে Sed এর কমান্ড কার্যকর করতে পারেন। এই addressing পদ্ধতিগুলো Sed ব্যবহারকে আরও ফ্লেক্সিবল এবং শক্তিশালী করে তোলে, যা আপনাকে খুব সহজে এবং দ্রুত টেক্সট ফাইল বা ডেটা ম্যানিপুলেশন করতে সহায়তা করে।
Sed (Stream Editor) ব্যবহার করার সময় আপনি line numbers ব্যবহার করে নির্দিষ্ট লাইন বা লাইন রেঞ্জ ঠিক করতে পারেন, যা addressing হিসেবে পরিচিত। Sed এর মাধ্যমে আপনি নির্দিষ্ট লাইন, লাইন রেঞ্জ বা প্যাটার্ন অনুযায়ী টেক্সট পরিবর্তন, মুছে ফেলা, বা নতুন কিছু যোগ করতে পারেন। এখানে, আমরা line numbers ব্যবহার করে Sed addressing সম্পর্কে বিস্তারিত আলোচনা করব।
Sed Addressing এর মাধ্যমে Line Number ব্যবহার করা
Sed এ addressing হলো যে কোনো নির্দিষ্ট লাইনে বা লাইনের রেঞ্জে কমান্ড প্রয়োগ করা। আপনি নির্দিষ্ট লাইন নম্বর বা প্যাটার্ন মেলানোর মাধ্যমে Sed কমান্ড প্রয়োগ করতে পারেন।
1. একক লাইন নম্বর দিয়ে addressing
একটি নির্দিষ্ট লাইন নম্বর ব্যবহার করে Sed কমান্ড প্রয়োগ করা যেতে পারে। উদাহরণস্বরূপ, যদি আপনি ফাইলের তৃতীয় লাইনটি পরিবর্তন করতে চান, তাহলে আপনি তৃতীয় লাইনকে ঠিক করে কমান্ড ব্যবহার করবেন।
সিনট্যাক্স:
sed 'line_number command' input-fileউদাহরণ:
sed '3s/cat/dog/' file.txtএটি file.txt ফাইলে তৃতীয় লাইনটি খুঁজে "cat" শব্দটি "dog"-এ প্রতিস্থাপন করবে।
2. লাইন রেঞ্জ দিয়ে addressing
Sed দিয়ে আপনি একটি নির্দিষ্ট লাইন রেঞ্জও নির্দিষ্ট করতে পারেন। যদি আপনি একটি রেঞ্জের মধ্যে কিছু পরিবর্তন করতে চান, তাহলে আপনাকে প্রথম এবং শেষ লাইনের মধ্যে কমা দিয়ে সেগুলি উল্লেখ করতে হবে।
সিনট্যাক্স:
sed 'start_line,end_line command' input-fileউদাহরণ:
sed '2,4s/cat/dog/' file.txtএটি file.txt ফাইলের দ্বিতীয় থেকে চতুর্থ লাইন পর্যন্ত "cat" শব্দগুলোকে "dog"-এ প্রতিস্থাপন করবে।
3. লাইন নম্বর দিয়ে লাইন মুছে ফেলা
Sed ব্যবহার করে আপনি নির্দিষ্ট লাইন মুছে ফেলতেও পারেন। যদি আপনি একটি নির্দিষ্ট লাইন বা একটি রেঞ্জ মুছে ফেলতে চান, তাহলে d কমান্ড ব্যবহার করতে হবে।
সিনট্যাক্স:
sed 'line_numberd' input-fileউদাহরণ:
sed '3d' file.txtএটি file.txt থেকে তৃতীয় লাইনটি মুছে ফেলবে।
রেঞ্জ দিয়ে লাইন মুছে ফেলা:
sed '2,4d' file.txtএটি file.txt থেকে দ্বিতীয় থেকে চতুর্থ লাইন পর্যন্ত মুছে ফেলবে।
4. প্যাটার্ন দিয়ে লাইন addressing
Sed দিয়ে আপনি একটি নির্দিষ্ট প্যাটার্ন খুঁজে সেটির ওপর কমান্ড প্রয়োগ করতে পারেন। আপনি যদি প্যাটার্ন ম্যাচিং এর ভিত্তিতে কমান্ড প্রয়োগ করতে চান, তাহলে আপনি /pattern/ ব্যবহার করতে পারেন।
সিনট্যাক্স:
sed '/pattern command' input-fileউদাহরণ:
sed '/cat/s/cat/dog/' file.txtএটি file.txt ফাইলের যেসব লাইনে "cat" শব্দটি থাকবে, সেখানে "cat" শব্দটিকে "dog"-এ পরিবর্তন করবে।
5. প্রথম এবং শেষ লাইন addressing
Sed দিয়ে আপনি প্রথম লাইন বা শেষ লাইন নির্বাচন করতে পারেন। প্রথম লাইন নির্বাচন করার জন্য 1 ব্যবহার করা হয়, এবং শেষ লাইন নির্বাচনের জন্য $ ব্যবহার করা হয়।
উদাহরণ:
প্রথম লাইন পরিবর্তন:
sed '1s/cat/dog/' file.txtএটি
file.txtএর প্রথম লাইনে "cat" শব্দটিকে "dog"-এ পরিবর্তন করবে।শেষ লাইন পরিবর্তন:
sed '$s/cat/dog/' file.txtএটি
file.txtএর শেষ লাইনে "cat" শব্দটিকে "dog"-এ পরিবর্তন করবে।প্রথম থেকে শেষ লাইন পর্যন্ত পরিবর্তন:
sed '1,$s/cat/dog/g' file.txtএটি
file.txtএর প্রথম থেকে শেষ লাইন পর্যন্ত সমস্ত "cat" শব্দগুলোকে "dog"-এ প্রতিস্থাপন করবে।
6. নথি বা ফাইলের ভিতরে লাইন সংখ্যা পেতে
Sed ব্যবহার করে আপনি একটি ফাইলের ভিতরে লাইন নম্বর গুনতে বা দেখতে পারেন। তবে এটি একটু ভিন্নভাবে কাজ করে, সেক্ষেত্রে = কমান্ড ব্যবহার করতে হবে।
সিনট্যাক্স:
sed = input-fileউদাহরণ:
sed = file.txtএটি file.txt ফাইলের প্রতিটি লাইনের নম্বর দেখাবে, যার সাথে সেই লাইনের কনটেন্টও থাকবে।
সারাংশ
Sed এর মাধ্যমে আপনি line numbers ব্যবহার করে নির্দিষ্ট লাইন বা লাইন রেঞ্জে কমান্ড প্রয়োগ করতে পারেন। আপনি একক লাইন নম্বর দিয়ে, লাইন রেঞ্জ দিয়ে, অথবা প্যাটার্ন ম্যাচিং এর মাধ্যমে Sed addressing ব্যবহার করতে পারেন। Sed এর এই ক্ষমতা ফাইল প্রক্রিয়াকরণ, টেক্সট পরিবর্তন এবং স্ক্রিপ্টিংয়ের কাজকে আরও সহজ এবং দ্রুত করে তোলে।
Sed (Stream Editor) টুলে Regular Expressions (রেগুলার এক্সপ্রেশন) ব্যবহার করা হয় টেক্সট ফাইল বা স্ট্রিমের মধ্যে নির্দিষ্ট প্যাটার্ন খুঁজে এবং সেগুলোর সাথে ম্যাচিং করার জন্য। রেগুলার এক্সপ্রেশন বা regex একটি শক্তিশালী টুল যা বিশেষ চরিত্রের সংমিশ্রণ দিয়ে টেক্সটের বিভিন্ন প্যাটার্ন অনুসন্ধান এবং পরিবর্তন করতে ব্যবহৃত হয়।
Sed এ Regular Expression ব্যবহার করে Matching
Sed এর সাহায্যে আপনি রেগুলার এক্সপ্রেশন ব্যবহার করে টেক্সট ফাইল বা স্ট্রিমে প্যাটার্নের সাথে মিল খুঁজে বের করতে পারেন এবং পরিবর্তন করতে পারেন। Sed আসলে POSIX compliant রেগুলার এক্সপ্রেশন সমর্থন করে, যার মানে এটি Basic Regular Expression (BRE) এবং Extended Regular Expression (ERE) উভয়টাই সমর্থন করে।
Sed এ রেগুলার এক্সপ্রেশন সিনট্যাক্স
Sed এর মধ্যে রেগুলার এক্সপ্রেশন ব্যবহারের জন্য সাধারণ সিনট্যাক্সটি হল:
sed 's/regular_expression/replacement/' file.txtএখানে:
regular_expression: এটি যে প্যাটার্নটি আপনি খুঁজতে চান, তা হতে হবে রেগুলার এক্সপ্রেশন।replacement: এটি হলো সেই টেক্সট যা আপনি প্যাটার্নের জায়গায় বসাতে চান।file.txt: এটি হলো সেই ফাইল যেখানে আপনি রেগুলার এক্সপ্রেশন অনুসারে পরিবর্তন করতে চান।
Sed এ রেগুলার এক্সপ্রেশন এর কিছু সাধারণ প্যাটার্ন
^(Caret): এটি লাইনের শুরুতে মিলানো প্যাটার্ন নির্দেশ করে।উদাহরণ: যদি আপনি "cat" শব্দটি যে কোনো লাইন এর শুরুতে থাকে তা খুঁজতে চান, তাহলে:
sed '/^cat/p' file.txt$(Dollar): এটি লাইনের শেষে মিলানো প্যাটার্ন নির্দেশ করে।উদাহরণ: যদি আপনি "dog" শব্দটি যেসব লাইন এর শেষে থাকে তা খুঁজতে চান, তাহলে:
sed '/dog$/p' file.txt.(Dot): এটি যেকোনো একক চরিত্রের সাথে মিলিয়ে থাকে।উদাহরণ: "c.t" প্যাটার্নটি "cat", "cot", "cut" ইত্যাদি শব্দের সাথে মিলবে:
sed '/c.t/p' file.txt*(Asterisk): এটি পূর্ববর্তী চরিত্রটির যেকোনো সংখ্যা (শূন্য বা তার বেশি) ম্যাচ করে।উদাহরণ: "ca*t" প্যাটার্নটি "ct", "cat", "caaat" ইত্যাদি সব মিলাবে:
sed '/ca*t/p' file.txt[](Square Brackets): এটি নির্দিষ্ট চরিত্রগুলির একটির সাথে মিলায়।উদাহরণ:
[aeiou]প্যাটার্নটি যে কোনো স্বরবর্ণের সাথে মিলবে:sed '/[aeiou]/p' file.txt^and$Combined: যদি আপনি একটি নির্দিষ্ট শব্দের শুরু এবং শেষ দুটোই মিলাতে চান, তাহলে আপনি^এবং$একত্রে ব্যবহার করতে পারেন।উদাহরণ: যদি আপনি শুধুমাত্র "dog" শব্দটি যেগুলি লাইন শুরু এবং শেষ উভয় জায়গায় রয়েছে তা খুঁজতে চান, তাহলে:
sed '/^dog$/p' file.txt[^ ](Negation inside Square Brackets): এটি একটি নির্দিষ্ট চরিত্র বাদে অন্য কিছু ম্যাচ করে।উদাহরণ:
[a-z]এর মাধ্যমে সব ছোট হাতের অক্ষর খুঁজতে পারেন, তবে[^a-z]দ্বারা সব বড় হাতের অক্ষর, সংখ্যা বা বিশেষ চিহ্ন খুঁজে পেতে পারেন:sed '/[^a-z]/p' file.txt\(Backslash): রেগুলার এক্সপ্রেশন স্নিপেটের মধ্যে কিছু বিশেষ চরিত্রের অর্থ থাকে, যেমন.,*,^,$ইত্যাদি। এদের ব্যবহার এড়াতে, এদের আগে\ব্যাকস্ল্যাশ ব্যবহার করা হয়।উদাহরণ: যদি আপনি একটি ডট (.) চরিত্রের সাথে মেলানো চান, তাহলে:
sed '/\./p' file.txt()and\1(Grouping and Backreferencing): আপনি একটি প্যাটার্ন গ্রুপ করে রাখতে পারেন এবং সেই গ্রুপের মান পরবর্তীতে ব্যবহার করতে পারেন।উদাহরণ: আপনি যদি একাধিক শব্দের মধ্যে মিল খুঁজে একটি নির্দিষ্ট অংশকে রিপ্লেস করতে চান, তবে
()দিয়ে গ্রুপিং এবং\1দিয়ে ব্যাকরেফারেন্স ব্যবহার করতে পারেন।sed 's/\(dog\) and \(cat\)/\2 and \1/' file.txtএটি "dog and cat" এর জায়গায় "cat and dog" করবে।
Sed এ রেগুলার এক্সপ্রেশন দিয়ে Matching এর উদাহরণ
লাইনের শুরুতে প্যাটার্ন খুঁজে বের করা: "cat" শব্দটি যেসব লাইন শুরুতে রয়েছে, সেগুলো খুঁজে বের করতে:
sed -n '/^cat/p' file.txtলাইনের মধ্যে নির্দিষ্ট শব্দ খুঁজে বের করা: "dog" শব্দটি যে কোনো স্থানে থাকে, সেটি খুঁজে বের করতে:
sed -n '/dog/p' file.txtলাইনের শেষে প্যাটার্ন খুঁজে বের করা: "fish" শব্দটি যেসব লাইনের শেষে রয়েছে, সেগুলো খুঁজে বের করতে:
sed -n '/fish$/p' file.txtবিশেষ চরিত্রের সাথে মিলানো: "c.t" যেকোনো টেক্সট যেগুলির মধ্যে একটি চরিত্র এবং "c" এবং "t" থাকবে, সেগুলো খুঁজে বের করতে:
sed -n '/c.t/p' file.txtনেগেটিভ প্যাটার্ন Matching: সব লাইন যেগুলোর মধ্যে "a" বা "e" নেই, সেগুলো খুঁজে বের করতে:
sed -n '/[^aeiou]/p' file.txt
Conclusion
Sed এর মাধ্যমে রেগুলার এক্সপ্রেশন ব্যবহার করে আপনি যেকোনো ধরনের টেক্সট বা স্ট্রিমের মধ্যে প্যাটার্নের সাথে ম্যাচিং করতে পারবেন। এটি বিশেষভাবে ব্যবহারিক যখন আপনাকে ফাইলের মধ্যে নির্দিষ্ট তথ্য খুঁজে বের করতে হয় এবং দ্রুত পরিবর্তন করতে হয়। রেগুলার এক্সপ্রেশন আপনাকে খুবই শক্তিশালী টেক্সট ম্যানিপুলেশন করতে সক্ষম করে, যেমন ফাইল বিশ্লেষণ, লগ ফাইল প্রসেসিং, বা ডেটা কনভার্সন।
Sed (Stream Editor) এ Range Addressing এবং Multiple Address Blocks দুটি অত্যন্ত গুরুত্বপূর্ণ কনসেপ্ট যা আপনাকে টেক্সট ফাইলে নির্দিষ্ট লাইন রেঞ্জের মধ্যে কাজ করতে সাহায্য করে। এগুলো আপনাকে একাধিক লাইন বা লাইন রেঞ্জের মধ্যে পরিবর্তন, মুছে ফেলা, বা নতুন কিছু যোগ করার ক্ষমতা প্রদান করে।
Range Addressing (রেঞ্জ অ্যাড্রেসিং)
Range Addressing এর মাধ্যমে আপনি টেক্সট ফাইলে একটি নির্দিষ্ট লাইন রেঞ্জের মধ্যে কমান্ড অ্যাপ্লাই করতে পারেন। রেঞ্জ অ্যাড্রেসিংটি আপনাকে দ্বিতীয় লাইন থেকে চতুর্থ লাইন বা বিশেষ কোন লাইন থেকে অন্য একটি লাইন পর্যন্ত কোনো কমান্ড প্রয়োগ করতে সাহায্য করে। এর জন্য Sed কমান্ডে লাইন নম্বর বা প্যাটার্নের মধ্যে একটি রেঞ্জ ব্যবহার করা হয়।
সিনট্যাক্স:
sed 'start_line,end_line command' input-fileএখানে:
- start_line: শুরু লাইন নম্বর বা প্যাটার্ন
- end_line: শেষ লাইন নম্বর বা প্যাটার্ন
- command: Sed কমান্ড যা আপনি রেঞ্জের মধ্যে অ্যাপ্লাই করতে চান।
- input-file: টেক্সট ফাইল যার উপর Sed কমান্ড প্রয়োগ করা হবে।
Range Addressing এর উদাহরণ
নির্দিষ্ট লাইন রেঞ্জের মধ্যে সার্চ এবং রিপ্লেস
ধরুন আপনিfile.txtফাইলে ২য় থেকে ৫ম লাইন পর্যন্ত "cat" শব্দটিকে "dog" দিয়ে প্রতিস্থাপন করতে চান।কমান্ড:
sed '2,5s/cat/dog/g' file.txtএই কমান্ডটি
file.txtফাইলে ২য় থেকে ৫ম লাইন পর্যন্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে।লেখার শেষে নতুন লাইন যোগ করা
ধরুন আপনি ৩য় থেকে ৬ষ্ঠ লাইন পর্যন্ত শেষে একটি নতুন লাইন যোগ করতে চান।কমান্ড:
sed '3,6a This is a new line' file.txtএই কমান্ডটি ৩য় থেকে ৬ষ্ঠ লাইনের পরে "This is a new line" যোগ করবে।
নির্দিষ্ট রেঞ্জের মধ্যে লাইন মুছে ফেলা
আপনি যদি ৪র্থ থেকে ৭ম লাইন পর্যন্ত মুছে ফেলতে চান, তবে কমান্ড হবে:কমান্ড:
sed '4,7d' file.txtএই কমান্ডটি
file.txtথেকে ৪র্থ থেকে ৭ম লাইন মুছে ফেলবে।
Multiple Address Blocks (একাধিক অ্যাড্রেস ব্লক)
Sed এ Multiple Address Blocks এর মাধ্যমে একাধিক লাইন রেঞ্জে কাজ করতে পারেন। এখানে আপনি একাধিক লাইন রেঞ্জ নির্দিষ্ট করে একাধিক কমান্ড প্রয়োগ করতে পারবেন। এটি একটি শক্তিশালী ফিচার, যা একাধিক অবস্থানে (যতগুলি ব্লক প্রয়োজন) কাজ করতে সাহায্য করে।
সিনট্যাক্স:
sed 'address1, address2 command1; address3, address4 command2' input-fileএখানে:
- address1, address2: প্রথম লাইন রেঞ্জ
- address3, address4: দ্বিতীয় লাইন রেঞ্জ
- command1, command2: একাধিক কমান্ড যা আপনার নির্দিষ্ট অ্যাড্রেস রেঞ্জে প্রয়োগ করা হবে।
- input-file: টেক্সট ফাইল যেখানে পরিবর্তন প্রযোজ্য।
Multiple Address Blocks এর উদাহরণ
একাধিক লাইন রেঞ্জে রিপ্লেসমেন্ট এবং ডিলিট
ধরুন আপনি ২য় থেকে ৫ম লাইন পর্যন্ত "cat" কে "dog"-এ প্রতিস্থাপন করতে চান এবং ৬ষ্ঠ থেকে ৮ম লাইন পর্যন্ত লাইন মুছে ফেলতে চান।কমান্ড:
sed '2,5s/cat/dog/g; 6,8d' file.txtএই কমান্ডটি:
- ২য় থেকে ৫ম লাইন পর্যন্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে।
- ৬ষ্ঠ থেকে ৮ম লাইন পর্যন্ত মুছে ফেলবে।
একাধিক লাইন রেঞ্জে নতুন লাইন যোগ করা
ধরুন আপনি ৩য় থেকে ৫ম লাইন পর্যন্ত "This is a new line" যোগ করতে চান এবং ৮ম থেকে ১০ম লাইনে একইভাবে নতুন লাইন যোগ করতে চান।কমান্ড:
sed '3,5a This is a new line; 8,10a Another new line' file.txtএটি ৩য় থেকে ৫ম লাইনের পরে "This is a new line" যোগ করবে এবং ৮ম থেকে ১০ম লাইনের পরে "Another new line" যোগ করবে।
একাধিক লাইন রেঞ্জে কমান্ড প্রয়োগ করা
আপনি যদি ২য় থেকে ৪র্থ এবং ৭ম থেকে ৯ম লাইনগুলোর মধ্যে একাধিক কাজ করতে চান (যেমন, রিপ্লেসমেন্ট এবং মুছতে), তাহলে:কমান্ড:
sed '2,4s/cat/dog/g; 7,9d' file.txtএটি:
- ২য় থেকে ৪র্থ লাইন পর্যন্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে।
- ৭ম থেকে ৯ম লাইন পর্যন্ত মুছে ফেলবে।
Range Addressing এবং Multiple Address Blocks এর সুবিধা
- দ্রুত পরিবর্তন: একাধিক লাইন বা লাইন রেঞ্জে দ্রুত এবং কার্যকরভাবে পরিবর্তন করতে সাহায্য করে।
- বিকল্প কমান্ড: একাধিক কমান্ড প্রয়োগ করে একাধিক লাইন বা লাইন রেঞ্জে কাজ করার সুবিধা প্রদান করে।
- স্ক্রিপ্টিং এবং অটোমেশন: স্ক্রিপ্টের মাধ্যমে বড় আকারের টেক্সট ফাইল বা ডেটাতে পরিবর্তন দ্রুত করতে সহায়ক।
সারাংশ
- Range Addressing Sed এর একটি শক্তিশালী ফিচার, যা আপনাকে নির্দিষ্ট লাইন রেঞ্জের মধ্যে কাজ করার সুযোগ দেয়। এটি আপনাকে নির্দিষ্ট লাইন বা লাইন রেঞ্জের মধ্যে মুছে ফেলা, প্রতিস্থাপন, বা নতুন লাইন যোগ করতে সাহায্য করে।
- Multiple Address Blocks এর মাধ্যমে আপনি একাধিক লাইন রেঞ্জে একাধিক কমান্ড প্রয়োগ করতে পারেন, যা একাধিক পরিবর্তন করতে সাহায্য করে।
Sed (Stream Editor) ব্যবহার করে আপনি addressing এর মাধ্যমে নির্দিষ্ট অংশে অপারেশন করতে পারেন, যেখানে আপনি কোনো নির্দিষ্ট লাইনের মধ্যে বা একটি নির্দিষ্ট প্যাটার্নের ভিত্তিতে অপারেশন চালাতে পারেন। Sed এর মাধ্যমে addressing করা হলে আপনি ফাইলের নির্দিষ্ট অংশে কেবলমাত্র পরিবর্তন করতে সক্ষম হন, যা আপনার কাজকে আরও কাস্টমাইজড এবং নির্দিষ্ট করতে সাহায্য করে।
Sed Addressing এর মৌলিক ধারণা
Sed এ address হল একটি বা একাধিক লাইন যা আপনি নির্দিষ্ট করতে পারেন, যাতে আপনি শুধুমাত্র সেই লাইনগুলোর উপর কমান্ড প্রয়োগ করতে পারেন। আপনি নির্দিষ্ট লাইন সংখ্যা বা প্যাটার্ন অনুসারে একটি address নির্বাচন করতে পারেন।
Sed Addressing এর সিনট্যাক্স
sed 'address command' file.txtএখানে:
- address: একটি লাইন সংখ্যা বা প্যাটার্ন যা আপনি নির্বাচন করবেন।
- command: Sed এর যে কমান্ডটি আপনি প্রয়োগ করতে চান (যেমন
s- সাবস্টিটিউট,d- ডিলিট,p- প্রিন্ট ইত্যাদি)।
Sed Addressing এর প্রকারভেদ
লাইন নম্বরের মাধ্যমে addressing
Sed তে আপনি সরাসরি একটি নির্দিষ্ট লাইন নম্বর দিয়ে addressing করতে পারেন। এক্ষেত্রে, আপনার নির্দেশিত লাইন নম্বরে কমান্ডটি প্রয়োগ হবে।সিনট্যাক্স:
sed 'linenumber command' file.txtউদাহরণ:
ফাইলের 5 নম্বর লাইনে "apple" শব্দটি "fruit" দিয়ে পরিবর্তন করতে:sed '5s/apple/fruit/' file.txtএখানে, শুধু 5 নম্বর লাইনে "apple" কে "fruit" দিয়ে প্রতিস্থাপন করা হবে।
রেঞ্জের মাধ্যমে addressing
আপনি একটি লাইন রেঞ্জের মধ্যেও অপারেশন করতে পারেন। এই ক্ষেত্রে, দুটি লাইন নম্বর বা প্যাটার্ন দিয়ে শুরু এবং শেষ লাইন নির্ধারণ করা হয়।সিনট্যাক্স:
sed 'start_line,end_line command' file.txtউদাহরণ:
2 থেকে 4 নম্বর লাইনের মধ্যে "apple" শব্দকে "fruit" দিয়ে পরিবর্তন করতে:sed '2,4s/apple/fruit/' file.txtএটি লাইন 2 থেকে 4 পর্যন্ত "apple" কে "fruit" দিয়ে প্রতিস্থাপন করবে।
প্যাটার্নের মাধ্যমে addressing
আপনি একটি নির্দিষ্ট প্যাটার্নের মাধ্যমে addressing করতে পারেন। অর্থাৎ, যদি কোনো লাইন ওই প্যাটার্নের সাথে মেলে, তবে Sed কমান্ডটি ঐ লাইনে প্রয়োগ করবে।সিনট্যাক্স:
sed '/pattern/command' file.txtউদাহরণ:
যদি আপনি "apple" শব্দ সহ যেকোনো লাইনে "fruit" প্রতিস্থাপন করতে চান, তবে:sed '/apple/s/apple/fruit/' file.txtএখানে, যেসব লাইন "apple" ধারণ করে, সেগুলোর মধ্যে "apple" শব্দটি "fruit"-এ প্রতিস্থাপন হবে।
চলমান প্যাটার্নের মাধ্যমে addressing
আপনি একটি প্যাটার্ন ব্যবহার করতে পারেন যা একটি নির্দিষ্ট প্যাটার্ন পাওয়ার পরে পরবর্তী লাইন বা অংশে কমান্ড প্রয়োগ করবে। এটিnকমান্ডের সাহায্যে করা হয়।সিনট্যাক্স:
sed '/pattern/{command; n;}' file.txtউদাহরণ:
যদি আপনি "apple" প্যাটার্ন মেলে এমন লাইনগুলো পরবর্তী লাইন সহ প্রদর্শন করতে চান:sed '/apple/{p; n;}' file.txtএটি "apple" শব্দযুক্ত লাইনটি প্রিন্ট করবে এবং তারপর পরবর্তী লাইনের কন্টেন্টও প্রদর্শন করবে।
Sed এর মাধ্যমে নির্দিষ্ট অংশে অপারেশন করার কিছু উদাহরণ
1. একটি নির্দিষ্ট লাইন পরিবর্তন করা
ফাইলের 7 নম্বর লাইনে "cat" শব্দকে "dog" দিয়ে পরিবর্তন করতে:
sed '7s/cat/dog/' file.txt2. একটি রেঞ্জের মধ্যে পরিবর্তন করা
3 থেকে 6 নম্বর লাইন পর্যন্ত "apple" শব্দকে "orange" দিয়ে পরিবর্তন করতে:
sed '3,6s/apple/orange/' file.txt3. প্যাটার্ন অনুসারে পরিবর্তন করা
যেসব লাইনে "apple" শব্দ রয়েছে, সেগুলোর "apple" শব্দটি "fruit" দিয়ে পরিবর্তন করতে:
sed '/apple/s/apple/fruit/' file.txt4. নির্দিষ্ট লাইন এবং প্যাটার্নের জন্য অপারেশন করা
যেসব লাইন "apple" প্যাটার্নে শুরু হয়, সেখানে "apple" কে "fruit" দিয়ে প্রতিস্থাপন করতে:
sed '/^apple/s/apple/fruit/' file.txtসারাংশ
Sed এর মাধ্যমে addressing ব্যবহার করে আপনি ফাইলের নির্দিষ্ট অংশে অপারেশন করতে পারেন। আপনি লাইন নম্বর, লাইন রেঞ্জ, অথবা প্যাটার্ন ব্যবহার করে যেকোনো নির্দিষ্ট অংশে পরিবর্তন, মুছে ফেলা, বা অন্যান্য অপারেশন চালাতে পারেন। এটি আপনাকে খুবই কাস্টমাইজড এবং নির্দিষ্টভাবে কাজ করার সুযোগ প্রদান করে।
Read more