$ IFS ভেরিয়েবল ব্যবহার করে
স্পেশাল শেল ভেরিয়েবল $ IFS একটি স্ট্রিংকে শব্দে বিভক্ত করার জন্য ব্যাশে ব্যবহৃত হয়। $ IFS ভেরিয়েবলকে বলা হয় ইন্টার্নাল ফিল্ড সেপারেটর (IFS) যা স্ট্রিং ভাগ করার জন্য নির্দিষ্ট ডিলিমিটার বরাদ্দ করতে ব্যবহৃত হয়। শব্দের সীমানা $ IFS দ্বারা bash এ চিহ্নিত করা হয়। হোয়াইট স্পেস হল এই ভেরিয়েবলের জন্য ডিফল্ট ডিলিমিটার মান। অন্য কোন মান যেমন ' t', ' n', '-' ইত্যাদি ডিলিমিটার হিসাবে ব্যবহার করা যেতে পারে। $ IFS ভেরিয়েবলে মান নির্ধারণ করার পর, স্ট্রিং মানটি দুটি বিকল্প দ্বারা পড়া যেতে পারে। এগুলি হল '-আর' এবং '-এ'। '-R' বিকল্পটি ব্যাকস্ল্যাশ () কে অক্ষর হিসেবে পাল্টানোর জন্য ব্যবহার করা হয় এবং '-a' বিকল্পটি বিভক্ত টেড শব্দগুলিকে একটি অ্যারে ভেরিয়েবলে সংরক্ষণ করতে ব্যবহৃত হয়। ব্যাশে $ IFS ভেরিয়েবল ব্যবহার না করে স্ট্রিংটি বিভক্ত করা যেতে পারে। স্ট্রিং ডেটা বিভক্ত করার বিভিন্ন উপায় ($ IFS সহ বা $ IFS ছাড়া) নিম্নলিখিত উদাহরণে দেখানো হয়েছে।
উদাহরণ -1: উপর ভিত্তি করে বিভক্ত স্ট্রিং
স্ট্রিং মান ডিফল্টভাবে সাদা স্থান দ্বারা বিভক্ত করা হয়। 'Split1.sh' নামে একটি ফাইল তৈরি করুন এবং নিম্নলিখিত কোড যোগ করুন। এখানে, $ text ভেরিয়েবল একটি স্ট্রিং মান নির্ধারণ করতে ব্যবহৃত হয়। শেল ভেরিয়েবল, $ IFS ব্যবহার করা হয় অক্ষর বরাদ্দ করতে যা স্ট্রিং ডেটা ভাগ করার জন্য ব্যবহৃত হবে। এই স্ক্রিপ্টে বিভাজক হিসেবে স্থান ব্যবহার করা হয়েছে। $-Strarr নামে একটি অ্যারে ভেরিয়েবলে স্প্লিট-টেড ডেটা সংরক্ষণ করার জন্য রিডিং কমান্ডের সাথে '-এ' বিকল্পটি ব্যবহার করা হয়। অ্যারের প্রতিটি উপাদান $ strarr পড়ার জন্য 'for' লুপ ব্যবহার করা হয়।
split1.sh
#!/বিন/ব্যাশ
#স্ট্রিং মান নির্ধারণ করুন
পাঠ্য='LinuxHint এ স্বাগতম'
# ডেলিমিটার হিসেবে স্পেস সেট করুন
আইএফএস=''
#স্পেস ডিলিমিটারের উপর ভিত্তি করে বিভক্ত শব্দগুলিকে একটি অ্যারেতে পড়ুন
পড়ুন -প্রতিstrarr<<< '$ টেক্সট'
#মোট শব্দ গণনা করুন
বের করে দিল 'সেখানে$ {#strarr [*]}পাঠ্যের শব্দ। '
# লুপ ব্যবহার করে অ্যারের প্রতিটি মান মুদ্রণ করুন
জন্যঘন্টাভিতরে '$ {strarr [@]}';
কর
printf '$ ঘন্টাn'
সম্পন্ন
আউটপুট:
স্ক্রিপ্ট চালান।
$বাশsplit1.sh
স্ক্রিপ্ট চালানোর পর নিচের আউটপুট দেখা যাবে।
উদাহরণ -২: একটি নির্দিষ্ট অক্ষরের উপর ভিত্তি করে বিভক্ত স্ট্রিং
কোন নির্দিষ্ট অক্ষর স্ট্রিং মান ভাগ করার জন্য বিভাজক হিসাবে ব্যবহার করা যেতে পারে। নামে একটি ফাইল তৈরি করুন split2.sh এবং নিম্নলিখিত কোড যোগ করুন। এখানে, ইনপুট স্ট্রিং হিসাবে কমা (,) যোগ করে বইয়ের নাম, লেখকের নাম এবং মূল্য মান নেওয়া হয়। পরবর্তী, স্ট্রিং মানটি বিভক্ত-টেড এবং শেল ভেরিয়েবলের মান, $ IFS এর ভিত্তিতে একটি অ্যারেতে সংরক্ষণ করা হয়। অ্যারে উপাদানগুলির প্রতিটি মান সূচক মান দ্বারা মুদ্রিত হয়।
split2.sh
#!/বিন/ব্যাশ#স্ট্রিং মান পড়ুন
বের করে দিল কমা আলাদা করে বইয়ের নাম, লেখকের নাম এবং মূল্য লিখুন। '
পড়ুনপাঠ্য
# ডিলিমিটার হিসেবে কমা সেট করুন
আইএফএস=','
#কমা ডিলিমিটারের উপর ভিত্তি করে বিভক্ত শব্দগুলিকে একটি অ্যারেতে পড়ুন
পড়ুন -প্রতিstrarr<<< '$ টেক্সট'
#বিভক্ত শব্দগুলি মুদ্রণ করুন
বের করে দিল বইয়ের নাম:$ {strarr [0]}'
বের করে দিল 'লেখকের নাম :$ {strarr [1]}'
বের করে দিল 'মূল্য:$ {strarr [2]}'
আউটপুট:
স্ক্রিপ্ট চালান।
$বাশsplit2.shস্ক্রিপ্ট চালানোর পর নিচের আউটপুট দেখা যাবে।
উদাহরণ-3: $ IFS ভেরিয়েবল ছাড়া স্ট্রিংটি বিভক্ত করুন
এই উদাহরণটি দেখায় কিভাবে $ IFS ব্যাশে ব্যবহার না করে স্ট্রিং মানটি ভাগ করা যায়। 'নামে একটি ফাইল তৈরি করুন split3.sh ’ এবং নিম্নলিখিত কোড যোগ করুন। স্ক্রিপ্ট অনুযায়ী, কোলন সহ একটি পাঠ্য মান (:) বিভক্তির জন্য ইনপুট হিসেবে নিতে হবে। এখানে, স্ট্রিং ডেটা বিভক্ত করতে -d বিকল্প সহ 'readarray' কমান্ড ব্যবহার করা হয়। '-D' বিকল্পটি $ IFS এর মত কমান্ডের বিভাজক চরিত্রকে সংজ্ঞায়িত করতে ব্যবহৃত হয়। এরপরে, অ্যারের উপাদানগুলি মুদ্রণ করতে 'for' লুপ ব্যবহার করা হয়।
split3.sh
#!/বিন/ব্যাশ#মূল স্ট্রিং পড়ুন
বের করে দিল 'বিভক্ত করার জন্য কোলন (:) দিয়ে স্ট্রিং লিখুন'
পড়ুনপ্রধান
#ডিলিমিটারের উপর ভিত্তি করে স্ট্রিং ভাগ করুন, ':'
পাঠ্যক্রম-ডি:-টিstrarr<<< '$ mainstr'
printf 'n'
# লুপ ব্যবহার করে অ্যারের প্রতিটি মান মুদ্রণ করুন
জন্য (( n=0; n< $ {#strarr [*]}; n ++))
কর
বের করে দিল '$ {strarr [n]}'
সম্পন্ন
আউটপুট:
স্ক্রিপ্ট চালান।
$বাশsplit3.shস্ক্রিপ্ট চালানোর পর নিচের আউটপুট দেখা যাবে।
উদাহরণ-4: একটি বহু-অক্ষরের বিভাজক দিয়ে স্ট্রিংটি বিভক্ত করুন
পূর্ববর্তী সমস্ত উদাহরণে একটি একক অক্ষর বিভাজক দ্বারা স্ট্রিং মান বিভক্ত করা হয়। মাল্টি-ক্যারেক্টার ডিলিমিটার ব্যবহার করে আপনি কিভাবে স্ট্রিংকে বিভক্ত করতে পারেন তা এই উদাহরণে দেখানো হয়েছে। নামে একটি ফাইল তৈরি করুন টাইমস বিভক্ত 4.sh এবং নিম্নলিখিত কোড যোগ করুন। এখানে, একটি স্ট্রিং ডেটা সংরক্ষণ করতে $ টেক্সট ভেরিয়েবল ব্যবহার করা হয়। $ ডেলিমিটার ভেরিয়েবলটি একটি বহু-অক্ষরের ডেটা বরাদ্দ করতে ব্যবহৃত হয় যা পরবর্তী বিবৃতিতে ডিলিমিটার হিসাবে ব্যবহৃত হয়। $ myarray ভেরিয়েবল প্রতিটি স্প্লিট-টেড ডেটাকে অ্যারে এলিমেন্ট হিসেবে সংরক্ষণ করতে ব্যবহৃত হয়। অবশেষে, সমস্ত বিভক্ত-টেড ডেটা 'for' লুপ ব্যবহার করে মুদ্রিত হয়।
split4.sh
#!/বিন/ব্যাশ#বিভক্ত করার জন্য স্ট্রিং সংজ্ঞায়িত করুন
পাঠ্য='learnHTMLlearnPHPlearnMySQLlearnJavascript'
#বহু-অক্ষরের সীমা নির্ধারণ করুন
ডিলিমিটার='শিখুন'
#মূল স্ট্রিং দিয়ে ডিলিমিটারকে কনক্যাটেনেট করুন
স্ট্রিং=$ টেক্সট$ ডিলিমিটার
#ডিলিমিটারের উপর ভিত্তি করে টেক্সট ভাগ করুন
myarray=()
যখন [[ $ স্ট্রিং ]];কর
myarray+=( '$ {স্ট্রিং %% '$ ডিলিমিটার'*}' )
স্ট্রিং=$ {স্ট্রিং#*'$ ডিলিমিটার'}
সম্পন্ন
#বিভক্তির পরে শব্দগুলি মুদ্রণ করুন
জন্যমানভিতরে $ {myarray [@]}
কর
বের করে দিল -এন '$ মান'
সম্পন্ন
printf 'n'
আউটপুট:
স্ক্রিপ্ট চালান।
$বাশsplit4.shস্ক্রিপ্ট চালানোর পর নিচের আউটপুট দেখা যাবে।
উপসংহার:
বিভিন্ন প্রোগ্রামিং উদ্দেশ্যে স্ট্রিং ডেটা বিভক্ত করা প্রয়োজন। ব্যাশে স্ট্রিং ডেটা বিভক্ত করার বিভিন্ন উপায় এই টিউটোরিয়ালে দেখানো হয়েছে। আশা করি, উপরের উদাহরণগুলি অনুশীলন করার পরে, পাঠকরা তাদের প্রয়োজনীয়তার ভিত্তিতে যেকোন স্ট্রিং ডেটা ভাগ করতে সক্ষম হবেন।
আরো তথ্যের জন্য দেখুন ভিডিও !