সেডের সাথে কীভাবে রেজেক্স অনুসন্ধান করা যায় এবং মিলগুলি হাইলাইট করতে হয় , বা কোনও মিল না পাওয়া গেলে প্রস্থান কোড (5) ফেরত কীভাবে পাবেন তা এখানে :
এটি ইনপুট.টেক্সট:
hello there
my dear old friend
a lot of things
we'll pass along the end
সমস্ত + হাইলাইট ম্যাচ + রিটার্ন প্রস্থান কোড মুদ্রণের জন্য এখানে আমার ফাংশনটি রয়েছে:
highlight()
{
pattern=$1
shift
sed '/'"${pattern}"'/,${s//\x1b[32m&\x1b[0m/g;b};$q5' "$@"
}
$ হাইলাইট "লো \ | শেষ" ইনপুট। টেক্সট || প্রতিধ্বনি- "" \ n * কোনও মিল খুঁজে পাওয়া যায় নি *
হেইল লো সেখানে
আমার প্রিয় পুরানো শুক্র শেষ জিনিস
একটি lo t শেষ
আমরা একটি lo ng শেষ পাস করব
যখন কোনও মিল নেই, এটি প্রস্থান কোড (5) এ ফিরে আসবে। আপনি এটি বিড়াল এবং পাইপ দিয়ে ব্যবহার করতে পারেন | যেমন:
$ বিড়াল ইনপুট.টেক্সট | "হট \ | এবং" || হাইলাইট করুন প্রতিধ্বনি- "" \ n * কোনও মিল খুঁজে পাওয়া যায় নি *
হ্যালো
আমার প্রিয় বন্ধুটি
অনেক কিছুই
আমরা শেষের সাথে পার করব
* পাওয়া যায়নি *
Https://unix.stackexchange.com/a/405725/43233 - এর জন্য ধন্যবাদ - আমি এটি + সিড ছাড়ার বিকল্পটি ব্যবহার করছি।
sed
খুব অবশ্যই একটি প্রস্থান স্থিতি আছে, এটি আপনার এখানে যা প্রয়োজন তা ঠিক তা করে না। যদিsed
কমান্ড ব্যর্থ হয়, উদাহরণস্বরূপ, আপনি যদি এটি কোনও ফাইলে চালানোর চেষ্টা করেন তবে আপনার কাছে লেখার অ্যাক্সেস নেই বা নেইsed
যা একটি নেই, একটি নন -0 প্রস্থান স্থিতি দিয়ে প্রস্থান করবেন। প্রস্থান স্থিতি ঠিক এটি নির্দেশ করেsed
যা আপনি এটি করতে বলেছিলেন তা করতে সক্ষম এবংecho "foo.bar" | sed 's/pop.*$//'
সঠিকভাবে কার্যকর হয়েছিল uted এটি দিয়ে সমস্ত লাইন মুছে ফেলা হয়েছেpop
। এই জাতীয় লাইন ছিল অপ্রাসঙ্গিক, কমান্ড এখনও কাজ করে।