কেন সেড সমস্ত ঘটনা প্রতিস্থাপন করে না?


118

যদি আমি এই কোডটি ব্যাশে চালাই:

echo dog dog dos | sed -r 's:dog:log:'

এটি আউটপুট দেয়:

log dog dos

আমি কীভাবে এটি কুকুরের সমস্ত ঘটনা প্রতিস্থাপন করতে পারি?


2
gগ্লোবাল প্রতিস্থাপনের জন্য আপনার পতাকা দরকার , আপনার -rএখানে বিকল্পের দরকার নেই ।
— ক্রিস সিমুর

উত্তর:


188

আপনার gমোডিফায়ারটি যুক্ত করা উচিত যাতে সেড প্যাটার্ন বাফারের সামগ্রীর বৈশ্বিক প্রতিস্থাপন সম্পাদন করে :

echo dog dog dos | sed -e 's:dog:log:g'

সেডে চমত্কার ডকুমেন্টেশনের জন্য, http://www.grymoire.com/Unix/Sed.html দেখুন । এই বিশ্ব পতাকাটি এখানে ব্যাখ্যা করা হয়েছে: http://www.grymoire.com/Unix/Sed.html#uh-6

এর জন্য সরকারী ডকুমেন্টেশনটি http://www.gnu.org/software/sed/manual/GNU sed এ উপলব্ধ


1
এখানে জিএনইউ সিডের জন্য একটি কর্নার কেস যুক্ত করা: sed -E 's,foo,bar,g'বিশ্বব্যাপী জিনিসটি করবেন না। আপনি যদি এটি পরিবর্তন করেন তবে sed -E -e 's,foo,bar,g'এটি কাজ করে।
— মেলভিন সোপাকুয়া

23

আপনাকে একটি gশেষে রাখতে হবে, এটি "গ্লোবাল" এর জন্য দাঁড়িয়েছে:

echo dog dog dos | sed -r 's:dog:log:g'
                                     ^

1
সেড-আর এর পরিবর্তে সেড-ই ব্যবহার করা উচিত, যা বিদ্যমান নেই।
— ডিলান ড্যানিয়েল

1
@ ডিলানডানিয়েলস man sedউবুন্টু অনুসারে -rবিকল্পটির অর্থ "বর্ধিত নিয়মিত অভিব্যক্তি ব্যবহার করুন"। সুতরাং প্রদত্ত কমান্ডটি ঠিকঠাক কাজ করে, যদিও এটির জন্য কাজ করার জন্য বর্ধিত নিয়মিত এক্সপ্রেশনগুলির বৈশিষ্ট্যগুলির প্রয়োজন নেই।
— ক্রেগ ম্যাককুইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.