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


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.