কোনও ফাইলের মধ্যে প্রতি একাধিক লাইন কীভাবে সরিয়ে ফেলবেন?


11

বলুন আমার কাছে এই 857835 লাইন ফাইল রয়েছে, এতে এই জাতীয় জিনিস রয়েছে:

a1
rubbish1
rubbish2
rubbish3
rubbish4
a1
rubbish5
rubbish6
rubbish7
rubbish8

এবং আমি সমস্ত উপস্থিতি a1এবং পরবর্তী লাইনটি ( rubbish1এবং rubbish5এই উদাহরণে) মুছে ফেলতে চাই । আমি এটা কিভাবে করব?

আমি grep 'a1' -v -A1কোনও লাভ করার চেষ্টা করেছি , এবং আমার চালিত দক্ষতা সত্যিই দুর্দান্ত নয়:}

আমার গুগল-ফু এই বার আমাকে সাহায্য করতে পারেনি, কেউ দয়া করে সহায়তা করুন!

উত্তর:


16

চেষ্টা করুন:

sed -e '/^a1$/,+1d' "filename"

এর অর্থ / ^ a1 $ / থেকে পরবর্তী লাইনে, মুছুন

^ এবং $ নিশ্চিত করে আপনি পুরো লাইনের সাথে মেলে, তাই কোনও লুকানো a1 মিলবে না।


6
আপনি চাইলে ^এবং $সেই ম্যাচে পুরো লাইনগুলিকে ম্যাচ করার জন্য বাধ্য করতে পারেন ।
Jender

@Jander: অবশ্যই, সংশোধন
asoundmove

12

নিম্নলিখিতটি নন-জিএনইউতে কাজ করবে sed( ,+1ঠিকানা সিনট্যাক্সটি একটি জিএনইউ এক্সটেনশন):

sed -e '/^a1$/,/^/d' my_file >my_filtered_file

"হ'ল 'এ 1' পড়ার মতো একটি লাইনে শুরু করা এবং পরবর্তী লাইনে শেষ হওয়া যার জন্য রেখার সূচনা বিদ্যমান (যেমন পরবর্তী লাইন), মুছুন।"

@ সাউন্ডমোভের উত্তরের চেয়ে এটি অনেক কম এক্সটেনসিবল, যদিও বিভিন্ন সংখ্যক লাইন মুছে ফেলা পুরোপুরি আলাদা স্ক্রিপ্টের প্রয়োজন।

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