আমি একটি ফাইলের একটি নির্দিষ্ট লাইনে একটি শব্দ পরিবর্তন করার চেষ্টা করছি, তবে সমস্ত একসাথে সংযোগ করতে আমার কিছুটা সমস্যা হচ্ছে।
মূলত, আমার ফাইলে একটি লাইনে 'ফার্মওয়্যার_রিভিশন' কীওয়ার্ড রয়েছে এবং এই লাইনে (এবং কেবল এই লাইনটিতে) আমি 'পরীক্ষার' শব্দটি 'উত্পাদন' শব্দের সাথে প্রতিস্থাপন করতে চাই।
সুতরাং আমি এটি করতে পারি:
grep 'firmware_revision' myfile.py | sed 's/test/production'
এটি আমার পছন্দসই লাইনটি বেছে নেবে এবং প্রতিস্থাপনটি সম্পাদন করবে, তবে কীভাবে পুরানো রেখাটি প্রতিস্থাপনের জন্য এই নতুন লাইনটি মূল ফাইলটিতে পাবেন তা আমি বুঝতে পারি না। আমি অবশ্যই এটি পুনরায় ফাইলে পুনর্নির্দেশ করতে পারি না, তাই আমার কী করা উচিত?
এমনকি যদি আমি টেম্পোরারিগুলি ব্যবহার করি, grep
কেবলমাত্র আমার প্রয়োজনীয় লাইনটি ব্যবহার করে আমি ফাইলের অন্যান্য সমস্ত ডেটা হারাতে পারি, তাই আমি আর এটিকে কেবল কোনও টেম্প ফাইলে পুনর্নির্দেশ করতে পারি না, তবে মূলটি টেম্পের সাথে প্রতিস্থাপন করতে পারি।
সম্পাদনা করুন - কেউ আরও তথ্য চেয়েছে
বলি আমার কাছে লাইনের মতো একটি ফাইল রয়েছে
[
('key_name1', str, 'value1', 'Description'),
('key_name2', str, 'value2', 'Description'),
('key_name3', str, 'value3', 'Description'),
('firmware_revision', str, 'my-firmware-name-test', 'Firmware revision name')
]
এখন আমি একটি স্ক্রিপ্ট লিখতে চাই (আদর্শভাবে একটি লাইনার) যা 'ফার্মওয়্যার_রিভিশন' সম্বলিত লাইনটি খুঁজে পেতে পারে এবং সেই পরীক্ষায় 'পরীক্ষা' শব্দের সমস্ত উদাহরণকে 'উত্পাদনে' পরিবর্তিত করে। 'পরীক্ষা' শব্দটি সেই ফাইলের অন্য জায়গায় থাকতে পারে এবং আমি সেগুলি পরিবর্তন করতে চাই না। সুতরাং পরিষ্কার হতে, আমি উপরের লাইন পরিবর্তন করতে চান
('firmware_revision', str, 'my-firmware-name-production', 'Firmware revision name')
আমি এটা কিভাবে করবো?
sed -i.bak '/firmware_revision/ s/test/production/' myfile.py
sed
খুব শক্তিশালী, এটি উভয় ফাংশন (grep
এবং প্রতিস্থাপন) সম্পাদন করতে পারে তবে রেখাটি আপনাকে কীভাবে সহায়তা করতে দেখায় সে সম্পর্কে আমাদের আরও তথ্যের প্রয়োজন হবে।