বাছাই ছাড়াই এক কলামের মধ্যে নকলের উপর ভিত্তি করে লাইনগুলি সরান


30

আমার কাছে বড় 3-কলাম ফাইল (10,000 ডলার লাইন) আছে এবং আমি যখন লাইনের তৃতীয় কলামের সামগ্রীগুলি অন্য লাইনের তৃতীয় কলামে উপস্থিত হয় তখন আমি লাইনগুলি সরিয়ে দিতে চাই। ফাইলগুলির আকারগুলি কিছুটা জটিল করে তোলে এবং আমি নীচের কোডের মতো কিছু ব্যবহার করতে পারি না কারণ পুরো লাইনগুলি অভিন্ন নয়; 3 কলামের বিষয়বস্তু।

awk '!seen[$0]++' filename

উত্তর:


31

(আপনার ক্ষেত্রে তৃতীয় কলামে) উপর ভিত্তি করে নকল করা লাইনগুলি সরাতে আপনি যে কলামটি সম্পাদন করতে চান তাতে কেবল আপনার অজাইক কমান্ডটি পরিবর্তন করুন:

awk '!seen[$3]++' filename

এই কমান্ডটি বলছে যে awkকোন লাইনগুলি প্রিন্ট করতে হবে। ভেরিয়েবল $33 কলামের সম্পূর্ণ বিষয়বস্তু ধারণ করে এবং বর্গাকার বন্ধনী অ্যারে অ্যাক্সেস। সুতরাং, ফাইলনামে রেখার প্রতিটি তৃতীয় কলামের জন্য, নামের অ্যারের নোড seenবৃদ্ধি করা হয় এবং সেই নোডের (কলাম 3) লিখিত সামগ্রীটি !আগে সেট না করা থাকলে লাইনটি মুদ্রিত হয় ।

উপরের awkকমান্ডটি যদি কাজ করে যে ইনপুট ফাইলে আপনার কলামগুলি তাদের সাথে spaceবা তাদের Tabমধ্যেই সীমিত করা হয়েছে, কলামগুলি যদি অন্য কোনও কিছুর সাথে সীমিত করে ফেলেছে, আপনাকে এটির -Fবিকল্পটি আঁকতে বলা দরকার need সুতরাং, উদাহরণস্বরূপ, যদি সমস্ত কলাম কমা ( ,) দিয়ে সীমাবদ্ধ থাকে এবং তৃতীয় কলামের ব্যবহার -F','বিকল্পের উপর ভিত্তি করে লাইনগুলি সরাতে চায় ।

awk -F',' '!seen[$3]++' filename

18

sortকমান্ড ইতিমধ্যে বিশাল ফাইল হ্যান্ডেল করতে অনুকূলিত হয়েছে। সুতরাং, আপনি sortআপনার ফাইলের কমান্ডটি খুব ভালভাবে ব্যবহার করতে পারেন ,

sort -u -t' ' -k3,3 file
  • -u - শুধুমাত্র অনন্য লাইন মুদ্রণ করুন।
  • -t- ডিলিমিটার নির্দিষ্ট করুন। এখানে এই উদাহরণে, আমি কেবল স্থানটি ডিলিমিটার হিসাবে ব্যবহার করি।
  • -k3,3 - 3 য় ফিল্ড বাছাই।

আপনি এই উত্তরটি উল্লেখ করতে পারেন যা প্রস্তাব দেয় যে জিএনইউ বাছাই করা বড় ফাইলগুলি বাছাইয়ের জন্য সর্বোত্তম পদ্ধতির। আপনার ক্ষেত্রে, আমি এমনকি ছাড়াই ভাবি -parallel, আপনি বেশি সময় না দিয়ে আপনার শেষ ফলাফলটি অর্জন করতে পারেন।


স্নিকারকভাবে মন্তব্য করতে চলেছিল যা -uডুপ্লিকেট লাইনগুলি সরিয়ে ফেলবে , নকল কীগুলি নয় ... তবে আমি ভুল করছি।
এলোমেলো

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