সিডে একক কল দিয়ে একাধিক সম্পাদনা করুন


16

আমি একটি কনফিগার ফাইল সম্পাদনা করার জন্য সেড ব্যবহার করার চেষ্টা করছি। আমি পরিবর্তন করতে চাই কয়েকটি লাইন আছে। আমি জানি যে লিনাক্সের অধীনে sed -iস্থান সম্পাদনা করার অনুমতি দেয় তবে এটির জন্য আপনাকে একটি ব্যাকআপ ফাইল সংরক্ষণ করতে হবে। তবে আমি একাধিক ব্যাকআপ ফাইল থাকা এড়াতে এবং আমার সমস্ত জায়গায় একবারে পরিবর্তন করতে চাই।

এটি করার কোন উপায় আছে sed -iবা এর চেয়ে ভাল বিকল্প আছে?

উত্তর:


22

আপনি sedকেবল পুনরাবৃত্তি করে একাধিক ক্রিয়াকলাপ চালিয়ে যেতে বলতে পারেন -e(বা -fযদি আপনার স্ক্রিপ্ট কোনও ফাইলে থাকে)।

sed -i -e 's/a/b/g' -e 's/b/d/g' fileএক fileজায়গায় রাখা, স্থান হিসাবে স্থান দুটি পরিবর্তন করে । ব্যাকআপ ফাইল ছাড়াই।

sed -ibak -e 's/a/b/g' -e 's/b/d/g' fileএক fileজায়গায় রাখা, স্থান হিসাবে স্থান দুটি পরিবর্তন করে । নামের একটি একক ব্যাকআপ ফাইল সহ filebak


2
নোটটি ক্রমটি গুরুত্বপূর্ণ। উপরে বর্ণিত উদাহরণ কমান্ডে, চিঠিটির সমস্ত দৃষ্টান্ত aরূপান্তরিত হয় bএবং তারপরে সমস্ত দৃষ্টান্ত bরূপান্তরিত হয় d। আপনার সাথে একই জিনিস করতে পারে sed -i -e 's/a\|b/d/g' fileযেকোন -turn সমস্ত উদাহরণ aবা bমধ্যে d
ওয়াইল্ডকার্ড

4

অন্য বিকল্পটি হ'ল ex, পূর্বসূরীর vi। এটা আসলে ইন-জায়গা স্ক্রিপ্টের ফাইল সম্পাদনার জন্য পছন্দের POSIX টুল; পার্লের চেয়ে এটি অসাধারণভাবে আরও নমনীয় এবং তর্কসাপেক্ষে আরও বেশি বহনযোগ্য is (আপনি যদি উইন্ডোজ বিশ্বের বাইরে থাকেন তবে পার্লের তুলনায় এটি নিরপেক্ষভাবে আরও বেশি বহনযোগ্য))sed -i

ব্যবহার উদাহরণস্বরূপ কমান্ড এই stackexchange উপর একটি আপেক্ষিক অভাব নেই ex, অন্তত ব্যবহার উদাহরণস্বরূপ কমান্ড আধিক্য সঙ্গে তুলনা sed, awkএবং পার্ল। যাইহোক, আমি নিজেকে মধ্যে ব্যাপকভাবে delved আছে জন্য POSIX চশমাex এবং আমি যেহেতু কখনো এটা জন্য ড্রাম পিটিয়ে করছি। আমি exএখানে এবং vi / Vim স্ট্যাকেক্সচেঞ্জ উভয় ব্যবহার করে অনেক উত্তর লিখেছি :

আরও পড়া:


3

একাধিক -eবিকল্পগুলি ব্যবহার করার পাশাপাশি , আপনি নিউলাইনস বা আধা-কলোন ব্যবহার করে একক সেড স্ক্রিপ্টে সেড কমান্ডগুলি পৃথক করতে পারেন।

এই স্ক্রিপ্টটি কমান্ড লাইনের ওয়ান-লাইনার, বা স্ক্রিপ্ট ফাইল কিনা তা এই ক্ষেত্রে।

যেমন

sed -e 's/a/b/g ; s/b/d/g' file

চারপাশের স্থান অক্ষরগুলি al ;চ্ছিক। আমি সেগুলি এখানে আধা কোলনটি দাঁড়িয়ে আছে তা নিশ্চিত করার জন্য ব্যবহার করেছি (সাধারণভাবে, কমান্ডগুলির মধ্যে পৃথকীকরণকারী কমান্ডগুলি বাদ দিয়ে, কমান্ডের মধ্যে সাদা স্থান উপেক্ষা করা হয় ... তবে ভুলে যাবেন না যে কমান্ডের মধ্যে সাদা স্থান হতে পারে এবং সাধারণত হয় উল্লেখযোগ্য)।

বা:

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