সেড দিয়ে বাম বন্ধনী কীভাবে প্রতিস্থাপন করবেন?


27

আমাকে (আমার ফাইলে কিছু চরিত্রের সাথে প্রতিস্থাপন করতে হবে, এবং আমি এটি করতে পারি না। \(সেডে গ্রুপিংয়ের জন্য ব্যবহৃত হয় এবং যখন আমি \\(সেড ব্যবহার করি তখন এটি এটিকে \(চরিত্র হিসাবে ঠিক হিসাবে বিবেচনা করে না (। এটি আমার কাছে একটি কৃপণ মামলা বলে মনে হচ্ছে।


7
প্রস্তাবনা: আপনি শুধু অন্যের জন্য একটি অক্ষর প্রতিস্থাপন করতে চান তাহলে, ব্যবহার tr(anslate): echo 'Hello (world)' | tr '()' '[]'; এটা আউটপুট Hello [world]
লেকেনস্টেইন

উত্তর:


45

আপনি যদি সেড ব্যবহার না করে -r (প্রসারিত নিয়মিত এক্সপ্রেশন) ব্যবহার করেন তবে এটি গ্রুপিংয়ের \(\)পরিবর্তে এটির মতো কাজ করবে ():

sed -e 's/(/X/g'

উদাহরণ স্বরূপ

$ echo "foo (bar) (baz)" | sed -e 's/(/X/g'
foo Xbar) Xbaz)

আপনি যদি ব্যবহার করতে চান তবে আপনি ভিতরে রাখতে -rপারেন , যেমন([]

sed -re 's/[(]/X/g'

যেহেতু লেকেনস্টেইন মন্তব্যগুলি ব্যবহার trকরা আরও যথাযথ হতে পারে কারণ আপনি কেবল প্রতিস্থাপন করছেন এবং আপনার নিয়মিত এক্সপ্রেশনগুলির সম্পূর্ণ শক্তির প্রয়োজন নেই।


টিএল; ডিআর: এড়িয়ে যাবেন না।
কিওয়ার্টজগুই

আমি পিএইচপি-র অবজ্ঞিত "স্প্লিট" কে "বিস্ফোরিত" ফাংশনটির সাথে প্রতিস্থাপন করতে এটি ব্যবহার করেছি, "স্প্লিট" এর আগে একটি স্পেস এবং তার পরে "(") তৈরি করা হয়েছেgrep -lRZ " split(" . | xargs -0 sed -i -e 's/ split(/ explode(/g'
বাটল বাটকস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.