সেড / রেগেক্স / রিপ্লেসমেন্ট / জি এর সম্পাদন চক্র


14

কেন echo ,,, |sed s':\(,\)\(,\):\1*\2:'g" ,*,," এর চেয়ে " ,*,*," ফলন হয় ? অন্য কথায়: "জি" পতাকা থাকা সত্ত্বেও কেন *এক জোড়া কমাতে "sedোকানো হয় না ?"

উত্তর:


14

কারণ দুটো ,মধ্যে গুলি (,\)\(,\), আপনি ইতিমধ্যে প্রথম দুই মিল খেতে ,s এবং Regex প্যাটার্ন এতদূর মিলেছে পরিত্যাগ করা না লাইন বাকি জন্য হবে। কেবলমাত্র একটি এখন বাকি আছে যা এটি সর্বশেষ ,তাই এটি কেবল *দ্বিতীয়টি প্রান্তিকের মধ্যে এটির বাইরে যেমন ছাপা হয়েছে ।

আপনার যদি অন্য কোনও ,ইনপুট থাকে তবে আপনি পছন্দসই (বৈশ্বিক, g) প্রতিক্রিয়া পাবেন:

% echo ,,,, | sed s':\(,\)\(,\):\1*\2:'g
,*,,*,

অদ্ভুত উক্তিটি কী? (কেন ছুটি sএবং gউদ্ধৃতি চিহ্ন বাইরে?)
GNP

@ জিএনপি হা হা, ওপি থেকে উত্তরাধিকার সূত্রে প্রাপ্ত।
হিমাইল

বাecho ,,,,, |sed s':\(,\)\(,\):\1*:’g
এনজেবুট

8

কেন প্রশ্নটির উত্তর ইতিমধ্যে @ হেইমাইল দ্বারা দেওয়া হয়েছে?

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'
,*,*,*,
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.