কেন echo ,,, |sed s':\(,\)\(,\):\1*\2:'g
" ,*,,
" এর চেয়ে " ,*,*,
" ফলন হয় ? অন্য কথায়: "জি" পতাকা থাকা সত্ত্বেও কেন *
এক জোড়া কমাতে "sedোকানো হয় না ?"
কেন echo ,,, |sed s':\(,\)\(,\):\1*\2:'g
" ,*,,
" এর চেয়ে " ,*,*,
" ফলন হয় ? অন্য কথায়: "জি" পতাকা থাকা সত্ত্বেও কেন *
এক জোড়া কমাতে "sedোকানো হয় না ?"
উত্তর:
কারণ দুটো ,
মধ্যে গুলি (,\)\(,\)
, আপনি ইতিমধ্যে প্রথম দুই মিল খেতে ,
s এবং Regex প্যাটার্ন এতদূর মিলেছে পরিত্যাগ করা না লাইন বাকি জন্য হবে। কেবলমাত্র একটি এখন বাকি আছে যা এটি সর্বশেষ ,
তাই এটি কেবল *
দ্বিতীয়টি প্রান্তিকের মধ্যে এটির বাইরে যেমন ছাপা হয়েছে ।
আপনার যদি অন্য কোনও ,
ইনপুট থাকে তবে আপনি পছন্দসই (বৈশ্বিক, g
) প্রতিক্রিয়া পাবেন:
% echo ,,,, | sed s':\(,\)\(,\):\1*\2:'g
,*,,*,
echo ,,,,, |sed s':\(,\)\(,\):\1*:’g
কেন প্রশ্নটির উত্তর ইতিমধ্যে @ হেইমাইল দ্বারা দেওয়া হয়েছে?
sed
(এখানে জিএনইউ ধরে নিচ্ছি) সহ কার্যতালিকা sed
- যতক্ষণ কোনও ম্যাচ পাওয়া যায় ততক্ষণ পুনরুক্তি করে লুপ
$ echo ,,, | sed -E ':a s/(,)(,)/\1*\2/ ; ta'
,*,*,
$ echo ,,,, | sed -E ':a s/(,)(,)/\1*\2/ ; ta'
,*,*,*,
POSIXly:
$ echo ,,,, | sed -e :a -e 's/\(,\)\(,\)/\1*\2/; ta'
,*,*,*,
বা সাথে perl
$ echo ,,, | perl -pe 's/,\K(?=,)/*/g'
,*,*,
$ echo ,,,, | perl -pe 's/,\K(?=,)/*/g'
,*,*,*,
s
এবংg
উদ্ধৃতি চিহ্ন বাইরে?)