সেড বা অ্যাডকে একাধিক লাইন প্রতিস্থাপন করা [বন্ধ]


9

আমি একটি এসএমবি ফাইলে 5 টি লাইন প্রতিস্থাপনের জন্য সেড বা অ্যাজক ব্যবহার করার চেষ্টা করছি তবে নতুন লাইনগুলি কীভাবে মোকাবেলা করতে হবে তা সম্পর্কে আমার কোনও ধারণা নেই।


6
অবশ্যই, সেড এবং অ্যাজক এটি করতে পারে তবে আপনার প্রশ্নটি ঠিক কী তা বোঝাতে আমার একটু সমস্যা হচ্ছে। ঠিক কী কারণে আপনাকে সমস্যা দেখা দিচ্ছে? নতুন লাইন ?োকানো? তাদের প্রতিস্থাপন?
— উদ্ভট

উত্তর:


19

শেড এটিতে বেশ খারাপ, কারণ এটি একবারে একটি লাইন পরিচালনা করে। আমি এটি করতে দেখাতে সক্ষম একমাত্র শালীন কৌশলটি হ'ল এটি , যা পুরো ফাইলটি শেডের হোল্ড বাফারে সংরক্ষণ করে এবং এরপরে একবারে এটি পরিচালনা করে:

sed -n '1h;1!H;${g;s/search/replace/;p;}'

আপনি যদি পারেন তবে এটি সম্পাদন করতে পার্ল ব্যবহার করা আরও সহজ:

perl -0pe 's/search/replace/'

search\nnewlines প্রতিনিধিত্ব করতে এস থাকতে পারে


1
sedমাল্টিলিনারের জন্য +1 ।
— Lazer

কমান্ড লাইনটি পার্ল করতে কী বোঝাতে পারে?
— মাইকেল 1

1
@ মিশেল -0রেকর্ড বিভাজকটি শূন্য করতে সেট করে, তাই পুরো ফাইলটি লাইন বাই লাইনের পরিবর্তে একবারে পড়তে হবে। -pপ্রতিস্থাপনের পরে ফলাফল মুদ্রণ করে তোলে। -eএটি কি পরবর্তী যুক্তিটি চালানোর জন্য অভিব্যক্তি হিসাবে নিয়েছে, এবং s/search/replace/তা কি এই অভিব্যক্তি
— মাইকেল মরোজেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.