কিভাবে একটি স্ট্রিং ব্যাশে একটি সাবস্ট্রিং আছে তা পরীক্ষা করে দেখুন

How Check If String Contains Substring Bash



প্রশ্ন হল, কিভাবে একটি স্ট্রিং ব্যাশে একটি স্ট্রিং আছে তা পরীক্ষা করতে হবে। উত্তর হল: প্যাটার্ন ম্যাচিং ব্যবহার করুন। এটি আরেকটি প্রশ্নের জন্ম দেয়, যা হল: প্যাটার্ন ম্যাচিং কি? আচ্ছা, একটি বাক্যে একটি বাক্যের নির্দিষ্ট বৈশিষ্ট্য আছে। এজন্য এটি একই বাক্যে বা অন্যান্য বাক্যে অন্যান্য বাক্যাংশ থেকে পৃথক। বৈশিষ্ট্য একটি প্যাটার্ন হিসাবে কোডেড করা যেতে পারে। এই ভাবে, একটি স্ট্রিং একটি নির্দিষ্ট বাক্যাংশ চিহ্নিত করা যেতে পারে। এই নিবন্ধটি ব্যাখ্যা করে কিভাবে একটি বড় স্ট্রিংয়ে একটি নির্দিষ্ট সাবস্ট্রিং সনাক্ত করা যায়, অন্য সাবস্ট্রিংয়ের সাথে মিলে যাওয়া সাবস্ট্রিংটি প্রতিস্থাপন করা হয় এবং ইনডেক্স দ্বারা একটি বড় স্ট্রিংয়ের যেকোনো স্ট্রিং সনাক্ত করা যায়। যাইহোক, ব্যাখ্যায় ডুব দেওয়ার আগে, একজনকে বাশের মধ্যে একটি স্ট্রিং প্রতিষ্ঠিত হওয়ার বিভিন্ন উপায়গুলি স্মরণ করতে হবে।

Escapeing Spaces দ্বারা স্ট্রিং

স্পেস এস্কেপ সিকোয়েন্স, '' দিয়ে প্রতিটি স্পেসকে প্রতিস্থাপন করে একটি স্ট্রিং তৈরি করা যেতে পারে; হিসাবে:







myVar= পর্যটনভিতরে মিশর দেশটির এক's নেতৃস্থানীয় অর্থনৈতিক শিল্প।
বের করে দিল $ myVar

আউটপুট হল:



মিশরের পর্যটন দেশের অন্যতম প্রধান অর্থনৈতিক শিল্প।



দ্রষ্টব্য: apostrophe এছাড়াও স্থান পালানোর ক্রম ব্যবহার।





একক উদ্ধৃতি দ্বারা স্ট্রিং

প্রোগ্রামারের কি স্ট্রিংয়ের সমস্ত স্পেস থেকে পালানোর সময় আছে? না। সুতরাং, একটি স্ট্রিং সীমাবদ্ধ করতে দুটি একক উদ্ধৃতি ব্যবহার করা ভাল; যেমন:

myVar='মিশরে পর্যটন একটি দেশ''এর প্রধান অর্থনৈতিক শিল্প।

একটি একক উদ্ধৃত স্ট্রিং কোন পালাবার ক্রমের সম্প্রসারণ (তার প্রভাব দিয়ে প্রতিস্থাপন) করতে দেয় না। সৌভাগ্যবশত, যদি দুটি স্ট্রিং একে অপরের পাশে কোডেড করা হয়, সেগুলি একটি স্ট্রিং হিসাবে নেওয়া হবে। একটি পালানোর ক্রম উপরোক্ত হিসাবে, মধ্যে মধ্যে সন্নিবেশ করা যেতে পারে। পালানোর ক্রম প্রসারিত হবে। সুতরাং আউটপুট হয়ে যায়:



মিশরের পর্যটন দেশের অন্যতম প্রধান অর্থনৈতিক শিল্প।

ডবল উদ্ধৃতি দ্বারা স্ট্রিং

ডবল উদ্ধৃতি দিয়ে, পালানোর ক্রমগুলিও প্রসারিত হয় না, তবে ভেরিয়েবলগুলি প্রসারিত হয়। নিচের কোডটি এটিকে ব্যাখ্যা করে:

myVar= পর্যটনভিতরে মিশর দেশটির এক's নেতৃস্থানীয় অর্থনৈতিক শিল্প।
বের করে দিল $ myVar

আউটপুট হল:

মিশরের পর্যটন দেশের অন্যতম প্রধান অর্থনৈতিক শিল্প।

দ্রষ্টব্য: apostrophe এছাড়াও স্থান পালানোর ক্রম ব্যবহার।

এই নিবন্ধে, বিবেচনা করা প্রধান ধরনের স্ট্রিং হল একক উদ্ধৃতিতে স্ট্রিং।

রেগুলার এক্সপ্রেশন ফান্ডামেন্টালস

রেজেক্স

এই স্ট্রিং বিবেচনা করুন:

এই পৃথিবী আসলে আমাদের বাড়ি নয়।

বিশ্ব হোক আগ্রহের ভিত্তি। তারপর, বড় স্ট্রিং (পুরো স্ট্রিং) বলা হয় টার্গেট স্ট্রিং বা সহজভাবে, টার্গেট। উদ্ধৃতিতে 'বিশ্ব' কে নিয়মিত অভিব্যক্তি বা সহজভাবে বলা হয়, রেজেক্স। বিষয়বস্তু, বিশ্ব, এই ক্ষেত্রে প্যাটার্ন।

সহজ মিল

নিম্নলিখিত কোডে, যদি 'ওয়ার্ল্ড' শব্দটি টার্গেটে পাওয়া যায়, আমরা বলব শব্দটি মিলে গেছে।

পৃ='এই পৃথিবী আসলে আমাদের বাড়ি নয়।'
reg='পৃথিবী'
যদি [[ $ str=$ reg ]];তারপর
বের করে দিলপাওয়া
অন্য
বের করে দিলপাওয়া যায়নি
থাকা

= ~, যা the এর পরে অ্যাসাইনমেন্ট অপারেটর, তাকে বাইন্ডিং অপারেটর বলা হয়। টার্গেট স্ট্রিংয়ে প্যাটার্ন মিলেছে কিনা শর্তটি পরীক্ষা করে। যদি প্যাটার্নের সাথে সম্পর্কিত একটি সাবস্ট্রিং টার্গেটে পাওয়া যায়, তাহলে ইকো স্টেটমেন্ট পাওয়া যায়। যদি এটি না পাওয়া যায়, ইকো স্টেটমেন্টের প্রতিধ্বনি পাওয়া যায় না। এই কোডের আউটপুট হল:

পাওয়া

নিদর্শন হিসাবে, বিশ্ব, লক্ষ্যবস্তুতে পাওয়া যায়। মনে রাখবেন যে [[এবং আগে]] পরে সীমাবদ্ধ স্থানটি বজায় রাখা হয়েছে।

প্যাটার্ন

উপরের কোডে, উদ্ধৃতিতে 'বিশ্ব' হল রেজেক্স এবং বিশ্ব নিজেই একটি প্যাটার্ন। এটি একটি সোজা প্যাটার্ন। যাইহোক, বেশিরভাগ নিদর্শন এত সহজ নয়। একটি প্যাটার্ন হল একটি সাবস্ট্রিং এর একটি বৈশিষ্ট্য যা খুঁজে পাওয়া যায়। এবং তাই, ব্যাশ প্যাটার্ন নির্দিষ্ট মেটাচরিত্র ব্যবহার করে। একজন মেটাচারেক্টার হল অন্য চরিত্রের একটি চরিত্র। উদাহরণস্বরূপ, ব্যাশ প্যাটার্ন নিম্নলিখিত মেটাচরিত্র ব্যবহার করে:

^ $। * +? () [] {} |

কন্ডিশন ডবল বন্ধনীতে একটি নিয়মিত এক্সপ্রেশনও টাইপ করা যায়। কিন্তু এটি উদ্ধৃতিতে থাকতে হবে না। সুতরাং, এই ক্ষেত্রে, এটি আক্ষরিক অর্থে, একটি প্যাটার্ন।

চরিত্র শ্রেণী

চতুস্কন বন্ধনী

নিম্নলিখিত কোডের আউটপুট পাওয়া গেছে, যার মানে একটি ম্যাচ হয়েছে:

পৃ='বিড়াল চেম্বারে এসেছিল।'
যদি [[ $ str=[সিবিআর]]];তারপর
বের করে দিলপাওয়া
থাকা

[Cbr] এ প্যাটার্ন মিলেছে বিড়াল, যা 'c' দিয়ে শুরু হয়, এবং যা চলতে থাকে এবং শেষ হয়। [cbr] মানে, 'c' বা 'b' বা 'r' এর পরে at এর সাথে মেলে।

নিম্নলিখিত কোডের আউটপুট পাওয়া গেছে, যার মানে একটি ম্যাচ হয়েছে:

পৃ='ব্যাট চেম্বারে এসেছিল।'
যদি [[ $ str=[সিবিআর]]];তারপর
বের করে দিলপাওয়া
থাকা

প্যাটার্ন, [cbr] এ মিলেছে ব্যাট, যা 'b' দিয়ে শুরু হয়, এবং যা চলতে থাকে এবং এট দিয়ে শেষ হয়। [cbr] মানে, 'c' বা 'b' বা 'r' এর পরে at এর সাথে মেলে।

নিম্নলিখিত কোডের আউটপুট পাওয়া গেছে, যার মানে একটি ম্যাচ হয়েছে:

পৃ='ইঁদুর চেম্বারে এসেছিল।'
যদি [[ $ str=[সিবিআর]]];তারপর
বের করে দিলপাওয়া
থাকা

প্যাটার্ন, [cbr] এ মিলেছে ইঁদুর, যা 'r' দিয়ে শুরু হয়, এবং যা চলতে থাকে এবং এ শেষ হয়।

উপরের কোড নমুনায়, প্রোগ্রামার জানে না যে টার্গেট স্ট্রিংয়ে বিড়াল বা বাদুড় বা ইঁদুর আছে কিনা। কিন্তু, তিনি জানেন যে স্তরটি 'সি' বা 'বি' বা 'আর' দিয়ে শুরু হয়, তারপর চলতে থাকে এবং এ শেষ হয়। একটি প্যাটার্নে বর্গাকার বন্ধনীগুলি বিভিন্ন সম্ভাব্য অক্ষরকে লক্ষ্যস্থলের অন্যদের তুলনায় একটি অবস্থানে একটি অক্ষরের সাথে মেলাতে দেয়। সুতরাং, বর্গাকার বন্ধনীগুলিতে অক্ষরের একটি সেট থাকে, যার মধ্যে একটি একটি স্তরের জন্য মিলে যায়। অবশেষে, এটি সম্পূর্ণ সাবস্ট্রিং যা মিলেছে।

অক্ষরের পরিসীমা

উপরের কোডে [cbr] হল একটি ক্লাস। এমনকি যদি 'c' বা 'b' বা 'r' একটি একক অক্ষরের সাথে মিলে যায়, যদি তা অনুসরণ করে তাৎক্ষণিকভাবে মিল না হয়, প্যাটার্নটি কোন কিছুর সাথে মিলবে না।

আচ্ছা, কিছু নির্দিষ্ট রেঞ্জ আছে যা একটি ক্লাস গঠন করবে। উদাহরণস্বরূপ, 0 থেকে 9 সংখ্যা ক্লাস গঠন করে, [0-9] 0 এবং 9 সহ। ছোট হাতের 'a' থেকে 'z' 'a' এবং 'z' সহ ক্লাস [a-z] গঠন করে। আপারকেস 'A' থেকে 'Z' 'A' এবং 'Z' সহ ক্লাস [A-Z] গঠন করে। একটি ক্লাস থেকে, এটি এমন একটি অক্ষর যা স্ট্রিংয়ের একটি অক্ষরের সাথে মেলে।

নিম্নলিখিত কোডটি একটি ম্যাচ তৈরি করে:

যদি [[ 'ID8id'=[0-9] ]];তারপর
বের করে দিলপাওয়া
থাকা

এইবার টার্গেট হল একটি আক্ষরিক স্ট্রিং অবস্থায়। 8, যা পরিসরের মধ্যে সম্ভাব্য সংখ্যাগুলির মধ্যে একটি, [0-9], 'ID8id' স্ট্রিংয়ে 8 মিলেছে। উপরের কোডটি এর সমতুল্য:

যদি [[ 'ID8id'=[0123456789] ]];তারপর
বের করে দিলপাওয়া
থাকা

এখানে, সমস্ত সম্ভাব্য সংখ্যা প্যাটার্নে লেখা হয়েছে, তাই হাইফেন নেই।

নিম্নলিখিত কোডে, একটি ম্যাচ পাওয়া যায়:

যদি [[ 'ID8iD'=[a-z] ]];তারপর
বের করে দিলপাওয়া
থাকা

ম্যাচটি হল রেঞ্জের ছোট হাতের 'i', [a-z], এবং টার্গেট স্ট্রিংয়ের ছোট হাতের 'i', 'ID8iD' এর মধ্যে।

মনে রাখবেন: পরিসীমা একটি শ্রেণী। ক্লাস একটি বড় প্যাটার্নের অংশ হতে পারে। সুতরাং একটি প্যাটার্নে, পাঠ্য সামনে এবং/অথবা ক্লাসের পরে হতে পারে। নিচের কোডটি এটিকে ব্যাখ্যা করে:

যদি [[ 'ID8id হল শনাক্তকারী'= ~ আইডি[0-9]আইডি ]];তারপর
বের করে দিলপাওয়া
থাকা

আউটপুট হল: পাওয়া গেছে। প্যাটার্ন থেকে 'ID8id' টার্গেট স্ট্রিংয়ে 'ID8id' মিলেছে।

ঘৃণা

নিম্নলিখিত কোড থেকে মিল পাওয়া যায় না:

যদি [[ '0123456789101112'=[^0-9] ]];তারপর
বের করে দিলপাওয়া
অন্য
বের করে দিলপাওয়া যায়নি
থাকা

আউটপুট হল:

পাওয়া যায়নি

Without বিন্দুর সামনে, বর্গাকার বন্ধনীগুলির মধ্যে, সীমার শূন্য লক্ষ্য স্ট্রিংয়ের প্রথম শূন্যের সাথে মিলে যেত। সুতরাং, a একটি রেঞ্জের সামনে (বা চ্ছিক অক্ষর) ক্লাসকে অস্বীকার করে।

নিম্নলিখিত কোডটি একটি ম্যাচ তৈরি করে কারণ শর্তটি পড়ে: লক্ষ্যের যেকোন অঙ্কের অক্ষরের সাথে মেলে:

যদি [[ 'ABCDEFGHIJ'=[^0-9] ]];তারপর
বের করে দিলপাওয়া
অন্য
বের করে দিলপাওয়া যায়নি
থাকা

সুতরাং আউটপুট হল: পাওয়া গেছে।

[^0-9] মানে একটি অ-অংক, তাই [^0-9] হল [0-9] এর অস্বীকার।

[^a-z] মানে একটি ছোট হাতের অক্ষর, তাই [^a-z] হল [a-z] কে অস্বীকার করা।

[^A-Z] মানে একটি অ-বড় হাতের অক্ষর, তাই [^A-Z] হল [A-Z] এর নেতিবাচকতা।

অন্যান্য নেতিবাচকতা পাওয়া যায়।

প্যাটার্নের সময়কাল (।)

প্যাটার্নের পিরিয়ড (।) নিজেকে সহ যেকোনো চরিত্রের সাথে মেলে। নিম্নলিখিত কোড বিবেচনা করুন:

যদি [[ '6759WXY.A3'= ~ 7.9W.Y.A]];তারপর
বের করে দিলপাওয়া
থাকা

কোডের আউটপুট পাওয়া যায় কারণ অন্যান্য অক্ষর মিলে যায়। একটি বিন্দু '5' এর সাথে মেলে; আরেকটি বিন্দু 'X' এর সাথে মেলে; এবং শেষ বিন্দু একটি বিন্দুর সাথে মেলে।

মেলানো বিকল্প

একটি লক্ষ্য স্ট্রিং জন্য এই বাক্য বিবেচনা করুন:

খাঁচায় বিভিন্ন ধরনের পাখি আছে।

এই টার্গেটে কবুতর বা ময়ূর বা agগল আছে কিনা কেউ জানতে চাইতে পারে। নিম্নলিখিত কোড ব্যবহার করা যেতে পারে:

পৃ='খাঁচায় বিভিন্ন ধরনের ময়ূর রয়েছে।'
যদি [[ $ str= ~ কবুতর|ময়ূর|eগল]];তারপর
বের করে দিলপাওয়া
অন্য
বের করে দিলপাওয়া যায়নি
থাকা

আউটপুট, পাওয়া গেছে। বিকল্প রূপক, | নিযুক্ত করা হয়েছে। দুই, তিন, চার এবং আরো বিকল্প হতে পারে। এই কোডে যা মিলেছে তা হল 'ময়ূর'।

গ্রুপিং

নিম্নলিখিত প্যাটার্নে, বন্ধনীগুলি অক্ষর গোষ্ঠীতে ব্যবহার করা হয়েছে:

একটি মঞ্চ (নৃত্যশিল্পী)

এখানে দলটি একজন মঞ্চ নৃত্যশিল্পী দ্বারা পরিবেষ্টিত (এবং)। (নর্তকী) একটি উপগোষ্ঠী, যখন একটি মঞ্চ (নৃত্যশিল্পী) পুরো গোষ্ঠী। নিম্নোক্ত বিবেচনা কর:

(নর্তকী অসাধারণ)

এখানে, সাবগ্রুপ বা সাবস্ট্রিং হল, নর্তকী অসাধারণ।

সাধারণ অংশ সহ সাবস্ট্রিং

একজন স্টেকহোল্ডার হল এমন ব্যক্তি যিনি ব্যবসার প্রতি আগ্রহী। একটি ওয়েবসাইট, স্টেক ডটকমের সাথে একটি ব্যবসার কথা কল্পনা করুন। কল্পনা করুন যে নিম্নলিখিত টার্গেট স্ট্রিংগুলির মধ্যে একটি কম্পিউটারে রয়েছে:

ওয়েবসাইট, স্টেক ডট কম ব্যবসার জন্য।

স্টেকহোল্ডার আছে ।;

স্টেকহোল্ডার স্টেক ডট কমের জন্য কাজ করে।

এই স্ট্রিংগুলির যে কোনওটি লক্ষ্য হতে দিন। প্রোগ্রামার জানতে চাইতে পারেন যে স্টেক ডট কম বা স্টেকহোল্ডার যে কোন টার্গেট স্ট্রিংয়ে আছে কিনা। তার প্যাটার্ন হবে:

স্টেক ডট কম | স্টেকহোল্ডার

বিকল্প ব্যবহার করে।

স্টেক দুটি শব্দে দুবার টাইপ করা হয়েছে। নিম্নরূপ প্যাটার্ন টাইপ করে এটি এড়ানো যেতে পারে:

স্টেক (.com | ধারক)

.com | ধারক এই ক্ষেত্রে উপগোষ্ঠী।

দ্রষ্টব্য: এই ক্ষেত্রে বিকল্প চরিত্রের ব্যবহার। স্টেক ডট কম বা স্টেকহোল্ডার এখনও অনুসন্ধান করা হবে। নিম্নলিখিত কোডের আউটপুট পাওয়া যায়:

পৃ=ওয়েবসাইট, স্টেক ডট কম ব্যবসার জন্য। '
যদি [[ $ str= ~ অংশীদারিত্ব(.সঙ্গে|ধারক) ]];তারপর
বের করে দিলপাওয়া
থাকা

এখানে মিলে যাওয়া সাবস্ট্রিং হল স্টেক ডট কম।

BASH_REMATCH পূর্বনির্ধারিত অ্যারে

BASH_REMATCH একটি পূর্বনির্ধারিত অ্যারে। ধরুন একটি প্যাটার্নের গ্রুপ আছে। পুরো গ্রুপ মিলেছে, এই অ্যারের সূচী 0 এর জন্য সেলে যায়। প্রথম উপগোষ্ঠী মিলেছে, সূচক 1 এর জন্য কোষে যায়; দ্বিতীয় উপগোষ্ঠী মিলেছে, সূচক 2 এর জন্য কোষে যায়, এবং তাই। নিচের কোডটি দেখায় কিভাবে এই অ্যারে ব্যবহার করতে হয়:

পৃ='মঞ্চ নর্তকী এসেছেন।'
যদি [[ $ str= 'মঞ্চ'(নৃত্যশিল্পী) ]];তারপর
বের করে দিলপাওয়া
থাকা

জন্যআমিভিতরে $ {! BASH_REMATCH [@]};কর
printf '$ {BASH_REMATCH [i]}, '
সম্পন্ন
বের করে দিল

আউটপুট হল:

পাওয়া
মঞ্চ নৃত্যশিল্পী, নৃত্যশিল্পী,

পুরো দলটি মঞ্চ নৃত্যশিল্পী। একটি মাত্র উপগোষ্ঠী আছে, যেটি নৃত্যশিল্পী।

দ্রষ্টব্য: প্যাটার্নের স্থানটি পালিয়ে গেছে।

আপার/লোয়ার কেস ইন্ডিপেন্ডেন্স ম্যাচিং

ম্যাচিং, যেমন উপরে ব্যাখ্যা করা হয়েছে, কেস-সংবেদনশীল। মামলাটি স্বাধীনভাবে করা যেতে পারে। এটি নিম্নলিখিত কোডে চিত্রিত করা হয়েছে:

দোকান -এসnocasematch

পৃ='আমরা ভালো গান পছন্দ করি।'
যদি [[ $ str= ~ GoOd]];তারপর
বের করে দিলপাওয়া
থাকা

দোকান -উnocasematch

আউটপুট হল: পাওয়া গেছে। প্যাটার্ন হল, GoOd। সাবস্ট্রিং মিলেছে 'ভালো'। লক্ষ্য করুন কিভাবে কোড সেগমেন্টের শুরুতে nocasematch অপশনটি সক্ষম করা হয়েছে এবং কোড সেগমেন্টের শেষে নিষ্ক্রিয় করা হয়েছে।

একটি স্ট্রিং এর দৈর্ঘ্য

একটি স্ট্রিং এর দৈর্ঘ্য পেতে সিনট্যাক্স হল:

$ {#প্যারামিটার}

উদাহরণ:

পৃ='আমরা ভালো গান পছন্দ করি।'
বের করে দিল $ {# str}

আউটপুট হল: 19।

স্ট্রিং হ্রাস

স্ট্রিং কমানোর জন্য সিনট্যাক্স হল:

$ {প্যারামিটার: অফসেট}
$ {প্যারামিটার: অফসেট: LENGTH}

যেখানে অফসেট গণনা শূন্য থেকে শুরু হয়।

নিচের উদাহরণ দেখায় কিভাবে একটি স্ট্রিং এর প্রথম 11 টি অক্ষর মুছে ফেলা যায়:

পৃ='আমি সবসময় ভালো সঙ্গীতে নাচতে থাকি।'
বের করে দিল $ {str: 10}

আউটপুট হল:

ভাল সঙ্গীত লাভ।

LENGTH গণনা, পরবর্তী চরিত্র থেকে শুরু হয়। নিচের কোডটি দেখায় কিভাবে স্ট্রিংয়ের মধ্যে একটি অংশকে অনুমতি দেওয়া যেতে পারে:

পৃ='আমি সবসময় ভালো সঙ্গীতে নাচতে থাকি।'
বের করে দিল $ {str: 10: 6}

আউটপুট হল:

ance টি

প্রথম 11 টি অক্ষর সরানো হয়েছে; পরবর্তী 6 টি অক্ষর অনুমোদিত ছিল, এবং বাকি অক্ষরগুলি স্বয়ংক্রিয়ভাবে সরানো হয়েছিল।

অনুসন্ধান করুন এবং প্রতিস্থাপন করুন

যখন একটি সাবস্ট্রিং পাওয়া যায়, এটি অন্য একটি সাবস্ট্রিং দিয়ে প্রতিস্থাপিত হতে পারে। এর জন্য সিনট্যাক্সগুলি হল:

কোথায়=$ {প্যারামিটার/প্যাটার্ন/রিপ্লেসমেন্ট}
কোথায়=$ {প্যারামিটার // প্যাটার্ন/রিপ্লেসমেন্ট}
কোথায়=$ {প্যারামিটার/প্যাটার্ন}
কোথায়=$ {প্যারামিটার // প্যাটার্ন}

একক ফরওয়ার্ড স্ল্যাশ সহ প্রথম সিনট্যাক্সের জন্য, শুধুমাত্র প্রথম ম্যাচ প্রতিস্থাপিত হয়। উদাহরণ:

পৃ=চেম্বারে একটি ইঁদুর, একটি বাদুড় এবং একটি বিড়াল আছে।
ঠিক=$ {str/[cbr] at/big cow}
বের করে দিল $ str
বের করে দিল $ ret

আউটপুট হল:

চেম্বারে একটি ইঁদুর, একটি বাদুড় এবং একটি বিড়াল আছে।
চেম্বারে একটি বড় গরু, একটি বাদুড় এবং একটি বিড়াল রয়েছে।

ডাবল ফরওয়ার্ড স্ল্যাশ সহ দ্বিতীয় সিনট্যাক্সের জন্য, ম্যাচের সমস্ত ঘটনা প্রতিস্থাপিত হয়। উদাহরণ:

পৃ=চেম্বারে একটি ইঁদুর, একটি বাদুড় এবং একটি বিড়াল আছে।
ঠিক=$ {str // [cbr] at/big cow}
বের করে দিল $ str
বের করে দিল $ ret

আউটপুট হল:

চেম্বারে একটি ইঁদুর, একটি বাদুড় এবং একটি বিড়াল আছে।
চেম্বারে একটি বড় গরু, একটি বড় গরু এবং একটি বড় গরু রয়েছে।

একক ফরোয়ার্ড স্ল্যাশ সহ তৃতীয় সিনট্যাক্সের জন্য, প্রথম এবং একমাত্র ম্যাচের কোন প্রতিস্থাপন নেই।

এছাড়াও, পাওয়া প্রথম স্তরটি মুছে ফেলা হয়। উদাহরণ:

পৃ=চেম্বারে একটি ইঁদুর, একটি বাদুড় এবং একটি বিড়াল আছে।
ঠিক=$ {str/[cbr] এ}
বের করে দিল $ str
বের করে দিল $ ret

ডাবল ফরোয়ার্ড স্ল্যাশ সহ চতুর্থ সিনট্যাক্সের জন্য, সমস্ত ম্যাচের জন্য কোনও প্রতিস্থাপন নেই। এছাড়াও, পাওয়া সমস্ত সাবস্ট্রিংগুলি মুছে ফেলা হয়। উদাহরণ:

পৃ=চেম্বারে একটি ইঁদুর, একটি বাদুড় এবং একটি বিড়াল আছে।
ঠিক=$ {str // [cbr] at}
বের করে দিল $ str
বের করে দিল $ ret

আউটপুট হল:

চেম্বারে একটি ইঁদুর, একটি বাদুড় এবং একটি বিড়াল আছে।
চেম্বারে a, a এবং a আছে।

উপসংহার

ব্যাশে একটি স্ট্রিং আছে কিনা তা পরীক্ষা করার জন্য, প্যাটার্ন ম্যাচিং ব্যবহার করতে হবে। প্যাটার্ন ম্যাচিং শুধুমাত্র কন্ডিশন ডাবল বন্ধনীতে হয় না, [[। । । ]]। এটি $ $ দিয়ে প্যারামিটার সম্প্রসারণেও স্থান নিতে পারে। । ।}। প্যারামিটার সম্প্রসারণের সাথে, সূচী দ্বারা একটি সাবস্ট্রিং পাওয়া সম্ভব।

এই নিবন্ধে যা উপস্থাপন করা হয়েছে তা প্যাটার্ন ম্যাচিংয়ের সবচেয়ে গুরুত্বপূর্ণ বিষয়। আরো আছে! যাইহোক, পাঠকের পরবর্তীতে যা পড়া উচিত, তা হল ফাইলের নাম সম্প্রসারণ।