একটি ফাইলের ক্ষেত্রে একটি ক্ষেত্রের স্বতন্ত্র মান গণনা করুন


17

আমার কাছে একটি ফাইলে প্রায় মিলিয়ন সংখ্যক লাইন রয়েছে। লাইনে আমার একটি ক্ষেত্র নামে পরিচিত transactionid, যার পুনরাবৃত্তি মান রয়েছে। আমার যা করা দরকার তা হ'ল এগুলি স্বতন্ত্রভাবে গণনা করা।

কোনও মান কতবার পুনরাবৃত্তি করা যায় না কেন, এটি একবারে গণনা করা উচিত।


এটি আরও সহজ হবে, যদি আপনি কেবলমাত্র ফাইলের ফর্ম্যাটটির একটি ঝলক দিতে পারেন..অবশ্যকভাবে ডেটা না।
নিখিল মুলি

বিটিডব্লিউ, আপনি যে মানটি কতবার বিদ্যমান তা নির্বিশেষে 1 হিসাবে গণনা করতে চান, বা আপনি সংঘটন / পুনরাবৃত্তির সংখ্যার গণনা চান? যদি আপনি কেবল এটি একবার গণনা করতে চান তবে স্বতন্ত্র মানগুলি কীভাবে গণনা করা হবে? আপনি কি দয়া করে আপনার প্রশ্নে আমার সম্পাদনাটি পরীক্ষা করতে পারেন এবং নিশ্চিত করতে পারেন যে আমি সঠিকভাবে ব্যাখ্যা করতে পারছি কিনা।
নিখিল মুলি

@ নিখিল এটি প্রশ্ন থেকে স্পষ্ট:... No matter of how many times a value is repeated, it should be counted as 1. ...

ঠিক আছে, তারপরে @ উত্তর থেকে উত্তরটি আপনার প্রয়োজনটি পূর্ণ করবে।
নিখিল মুলি

বিলম্বের জন্য দুঃখিত আমি ইন্টারনেট সংযোগের বাইরে ছিলাম। পৃথককারী 2 | ' এবং ক্ষেত্র ক্ষেত্র 28. আমি ব্যবহৃত; cat <file_name> | awk -F"|" '{if ((substr($2,0,8)=='20120110')) print $28}' | sort -u | wc -l যদি অনুচ্ছেদটি তারিখের অন্য চেকের জন্য মনে হয় যেমন এটি সুস্পষ্ট বলে মনে হয় :)
ওলগুন কেয়া

উত্তর:


23

ঠিক আছে, ধরে নিই যে আপনার ফাইলটি একটি পাঠ্য ফাইল, ক্ষেত্রগুলি কমা বিভাজক ',' দ্বারা পৃথক করা হয়েছে। আপনি জানতে পারবেন কোন ক্ষেত্রের 'transactionid'অবস্থানের দিক থেকে is ধরে নিচ্ছি যে আপনার 'transactionid'ক্ষেত্রটি 7 তম ক্ষেত্র।

awk -F ',' '{print $7}' text_file | sort | uniq -c

এটি 7 তম ক্ষেত্রে স্বতন্ত্র / অনন্য ঘটনা গণনা করবে এবং ফলাফল মুদ্রণ করবে।


কেন আদেশের sortআগে uniq
g10guang

@ g10guang Becasue uniqরেকর্ডগুলি অপসারণ করার জন্য তাদের একে অপরের পাশে থাকা দরকার।
dsz

3

সম্ভবত সবচেয়ে স্নিগ্ধ পদ্ধতি নয়, তবে এটি কাজ করা উচিত:

awk '{print $1}' your_file | sort | uniq | wc -l

$1ক্ষেত্রের সাথে সম্পর্কিত সংখ্যাটি কোথায় পার্স করা উচিত।


3

ফাইলটি বাছাই করার দরকার নেই .. (ফাইলটি বাছাই করা uniqপ্রয়োজন)
এই অ্যাজ স্ক্রিপ্টটি ধরে নিয়েছে ক্ষেত্রটি প্রথম সাদা ক্ষেত্রের সীমানা ক্ষেত্র।

awk 'a[$1] == "" { a[$1]="X" } END { print length(a) }' file 

একটি বিশাল ফাইলের জন্য (যেমন, র‌্যামের আকারের কাছাকাছি হওয়া), অ্যাডাব্ল্যাকটি প্রচুর স্মৃতি গ্রহণ করবে। বেশিরভাগ sortবাস্তবায়ন বিশাল ফাইলগুলির সাথে ভালভাবে মোকাবেলা করার জন্য ডিজাইন করা হয়েছে।
গিলস 'অসহায় হওয়া বন্ধ করুন'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.