প্রথমত, আপনি কী চান সে সম্পর্কে আপনার স্পষ্ট হওয়া উচিত। যদি আপনি জানেন যে স্ট্রিংটি শেষ হয়ে গেছে .rtf
এবং আপনি মুছে ফেলতে চান তবে .rtf
আপনি ব্যবহার করতে পারেন var2=${var%.rtf}
। প্রত্যয়টি কী তা যদি আপনি না জানেন তবে আপনি শেষের সাথে শুরু করে সমস্ত কিছু সরাতে চান .
তবে আপনি ব্যবহার করতে পারেন var2=${var%.*}
। আপনি যদি কেবল প্রথমটি পর্যন্ত রাখতে চান তবে .
আপনি এটি ব্যবহার করতে পারেন var2=${var%%.*}
। কেবলমাত্র এক পিরিয়ড থাকলে শেষ দুটি বিকল্পগুলির একই ফলাফল হয়, তবে যদি একের বেশি থাকতে পারে তবে আপনি কোনটি চান তা সিদ্ধান্ত নেওয়া উচিত।
আপনি যদি সত্যই অক্ষরগুলির যথাযথ সংখ্যা সরাতে চান তবে এখানে কিছু বিকল্প রয়েছে।
আপনি বিশেষভাবে ব্যাশ নির্দিষ্ট করেছেন, সুতরাং আমরা ব্যাশ বিল্টিনগুলি দিয়ে শুরু করব। যেটি সবচেয়ে দীর্ঘ সময় ধরে কাজ করেছে তা হ'ল আমি উপরে ব্যবহৃত একই প্রত্যয়-অপসারণ সিনট্যাক্স: চারটি অক্ষর অপসারণ করতে, ব্যবহার করুন var2=${var%????}
। আপনার প্রতি অক্ষর সরানোর জন্য একটি প্রশ্ন চিহ্ন প্রয়োজন, যাতে এটি বৃহত্তর সাবস্ট্রিং দৈর্ঘ্যের জন্য অকার্যকর হয়ে পড়ে।
সামান্য নতুন নিষ্কাশন সাবস্ট্রিং হয়: var2=${var::${#var}-4}
। 4
আলাদা আলাদা অক্ষর মুছে ফেলার জন্য আপনি এখানে যেকোন সংখ্যা রাখতে পারেন। ( ${#var}
স্ট্রিংয়ের দৈর্ঘ্যের দ্বারা প্রতিস্থাপন করা হয়েছে, সুতরাং এটি প্রথমটি (দৈর্ঘ্য - 4) অক্ষর রাখতে বলছে))
বাশের আরও নতুন সংস্করণ (বিশেষত 4+, যার অর্থ ম্যাকোস সহ জাহাজগুলি কাজ করবে না) আপনাকে এটিকে সরল করতে দেয় var2=${var::-4}
।
আপনি যদি বাস্তবে বাশ ব্যবহার না করে তবে কিছু অন্য পসিক্স-ধরণের শেল ব্যবহার করেন তবে প্রত্যয় অপসারণটি এখনও কার্যকর থাকবে, এমনকি প্লেইন পুরাতন ড্যাশগুলিতেও (যেখানে বাকী কেউই চাইবে না)। Zsh, তারা সব কাজ কিন্তু আপনি একটি দিতে হবে 0
কোলন মধ্যে: var2=${var:0:-4}
ইত্যাদি ksh, যদি মাসে ২0 প্রয়োজন এবং স্পষ্ট দৈর্ঘ্য -4 অভিব্যক্তি ব্যবহার করতে হবে: var2=${var:0:${#var}-4}
।
আপনি অবশ্যই কোনও ইউটিলিটি প্রোগ্রামের সাহায্যে এটির জন্য কমান্ড বিকল্প ব্যবহার করতে পারেন; এখানে প্রচুর পরিমাণে কাজ করবে, তবে এর মতো var2=$(cut -c -4 <<<"$var")
কিছু সম্ভবত সংক্ষিপ্ত বিকল্প।