উত্তর:
regular বি নিয়মিত প্রকাশে শব্দের সীমানা মেলে (অর্থাত্ প্রথম শব্দের অক্ষর এবং শব্দের অক্ষরের মধ্যে অবস্থান):
$ echo "bar embarassment" | sed "s/\bbar\b/no bar/g"
no bar embarassment
\band\b
দিনটি বাঁচিয়েছি "
Mac OS X এর উপর, তন্ন তন্ন এই Regex syntaxes ভেতরে কাজ sed পুরো শব্দ মেলানোর জন্য
\bmyWord\b
\<myWord\>
এখনই আমাকে শোনো এবং আমাকে বিশ্বাস করুন, এই কুরুচিপূর্ণ বাক্য গঠনটি আপনার ব্যবহার করা উচিত:
/[[:<:]]myWord[[:>:]]/
সুতরাং, উদাহরণস্বরূপ, প্রতিস্থাপন করতে পুদিনা সঙ্গে পুদিনার মত শুধুমাত্র পুরো শব্দের জন্য:
sed "s/[[:<:]]mint[[:>:]]/minty/g"
sed
ম্যাকপোর্টস বা হোমব্রিউয়ের মাধ্যমে কেবল জিএনইউ (এবং অন্যান্য প্রতিটি জিএনইউ সরঞ্জাম) ইনস্টল করুন এবং নিশ্চিত করুন যে এটি আপনার মধ্যে প্রথম আসে PATH
। ম্যাককে মোটামুটি ব্যবহারযোগ্য করে তোলা সম্ভব।
brew install coreutils
, যা সমস্ত gnu সরঞ্জামের উপসর্গ করে।
brew install gnu-sed
ব্যবহার করতেgsed
perl -pe 's|\bone\b|two|g'
। এখানে এবং সেখানে ব্যর্থতার সাথে স্থিরভাবে কাজ করে।
আমার একটি মেশিনে, " \b
" (উদ্ধৃতি ব্যতীত) দিয়ে শব্দটি সীমিত করা কার্যকর হয়নি। সমাধানটি হ'ল \<
ডিলিমিটার শুরু করার জন্য " " এবং সীমানা \>
শেষ করার জন্য " " ব্যবহার করা।
জোয়াকিম লন্ডবার্গের উদাহরণ দিয়ে ব্যাখ্যা করতে :
$ echo "bar embarassment" | sed "s/\<bar\>/no bar/g"
no bar embarassment
শেল কমান্ডে:
echo "bar embarassment" | sed "s/\bbar\b/no bar/g"
বা:
echo "bar embarassment" | sed "s/\<bar\>/no bar/g"
তবে আপনি যদি ভিমে থাকেন তবে আপনি কেবল পরে ব্যবহার করতে পারেন:
:% s/\<old\>/new/g
$ echo "bar embarassment"|awk '{for(o=1;o<=NF;o++)if($o=="bar")$o="no bar"}1'
no bar embarassment
echo " bar embarassment " | awk '{for(o=1;o<=NF;o++)if($o=="bar")$o="no bar"}1' | cat -E
দেয় no bar embarassment$
।