সেড ব্যবহার করে একটি স্ট্রিং প্রতিস্থাপন করুন


0

আমার কাছে একটি নমুনা ইনপুট ফাইল রয়েছে:

 $ cat test.txt 

 xz:xx.d.r1.latest

এখন আমি একটি অংশ নতুন মান দিয়ে প্রতিস্থাপন করতে চাই। উদা: আমি প্রতিস্থাপন করতে চেয়েছিলেন r1সঙ্গে r2উপরের পাঠ্য যাতে নতুন ণ; / p & হবে

 xz:xx.d.r2.latest

আমি ভেরিয়েবলগুলি ব্যবহার করে এটি করতে চেয়েছিলাম। উদাহরণস্বরূপ, ভেরিয়েবলের মধ্যে সঞ্চিত oldমান এবং ভেরিয়েবলের সাথে মানটি প্রতিস্থাপনের মান বিবেচনা করুন new:

 $ old=r1
 $ new=r2

প্রতিস্থাপনের জন্য, আমি চেষ্টা করেছিলাম

sed -i 's/'"${old}"'/'"${new}"'/g' test.txt
sed -i "s/$old}/${new}/g" test.txt
sed -i 's/'"$old"'/'"$new"'/g' test.txt
sed -i "s/${old}/${new}/g" test.txt

কিন্তু তাদের কেউই কাজ করেনি মানটি প্রতিস্থাপন করা হচ্ছে না। সুতরাং যে কেউ আমাকে সহায়তা করতে পারে বা সিনট্যাক্সটি সঠিক কিনা বা আমি কী অনুপস্থিত তা বলতে পারি।


এই আদেশগুলি সমস্ত sed -i "s/$old}/${new}/g" test.txtআমার জন্য কাজ ছাড়া । আপনি আরও বিস্তারিতভাবে আপনার সমস্যা বর্ণনা করতে পারেন?
আরকাদিউস দ্রবকিজিক

আমি যে মানগুলি চেয়েছিলাম তা প্রতিস্থাপন করা হচ্ছে না। আমার মনে হয় আমি যে কমান্ডটি ব্যবহার করেছি তা কার্যকর হচ্ছে না
DendULURI CHAITANYA

@ আরকাদিউসড্র্যাবজাইক এবং আপনার মতো তিনি কাজ করেন নি, তিনি একজন missing
বার্লপ

দ্বিতীয় এবং তৃতীয় কমান্ডগুলি {{পুরাতন} এর বার
op

উত্তর:


0

আপনি BSD এরsed ব্যবহার করছেন (যেমন ম্যাকোএসে), -iবিকল্পটি একটি মানহীন ফ্রিবিএসডি এক্সটেনশান এবং এটিতে একটি যুক্তি প্রয়োজন। সুতরাং আপনি সঠিক ক্রস-সামঞ্জস্যপূর্ণ সিনট্যাক্সটি ব্যবহার করছেন তা নিশ্চিত করার জন্য আপনার এটি পরিবর্তন করা উচিত:

sed -i'.bak' ... # rest of the command

তা ছাড়া আপনার কমান্ড ঠিক আছে। যেমন

sed -i'.bak' 's/'"${old}"'/'"${new}"'/g' test.txt

ডাব্লুএসএল-তে বাশ শেল পরীক্ষিত (উইন্ডোজে উবুন্টু)।

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