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


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.