একটি ফাইলের মধ্যে প্রতিটি লাইন কতবার উপস্থিত হয় তা গণনা করুন


23

বলুন আমার কাছে একটি ফাইল রয়েছে যা এতে রয়েছে:

A
A
A
B
CC

আমি এই মত আউটপুট পেতে চান:

A 3
B 1
CC 1

উত্তর:


23

আমি এটি বের করেছিলাম; এর একটি uniqবিকল্প হ'ল -c"উপস্থিতির সংখ্যা অনুসারে উপসর্গ রেখা":

$ uniq -c

1
নোটটি প্রথমে রাখে। যদি আপনি অর্ডারটি সম্পর্কে uniq -c filename.txt | sed 's/[^0-9]*\\([0-9]\+\\) \\(.*\\)/\2 \1/'
উদ্বিগ্ন হন

12
এছাড়াও মনে রাখবেন যে এটি কেবল সংলগ্ন পুনরাবৃত্ত লাইনের গণনা করে। একটি সাধারণ প্রতিমা হ'লsort | uniq
স্টিভেন ডি

4
ইউনিট গণনাটি ডেটামের সামনে রাখে। মূল প্রশ্নের আসলে এর মতো কিছু দরকার হবে: ফাইলের নাম বাছাই করুন uniq -c | awk '{মুদ্রণ $ 2, $ 1}'
ব্রুস এডিজার

উপরের মন্তব্যগুলি থেকে এটি স্পষ্ট না হলে আপনার লক্ষ্য অর্জনের জন্য আপনাকে অবশ্যই ডেটাটি প্রথমে সাজানো হয়েছে তা নিশ্চিত করতে হবে । যদি এটি বাছাই না করা হয়, আপনার পুনরাবৃত্তি এন্ট্রি থাকবে। উদাহরণস্বরূপ, যদি আপনার মূল ফাইলটি পরিবর্তিত হয় A \ A \ A \ B \ A \ CCতবে কেবলমাত্র আউটপুট প্রদর্শিত uniq -cহবে A 3এবং পরে শো হবে A 1। প্রথমে বাছাই করা, সমস্ত অভিন্ন লাইনগুলি একত্রে গোষ্ঠীভুক্ত করার গ্যারান্টি
দিবে

16

আমি ঠিক এখানে একটি অনুরূপ সমস্যা নিয়ে এসেছি। এ থেকে, আমি কিছুটা আরও উন্নত কমান্ড একসাথে পরিচালনা করতে সক্ষম হয়েছি, যা আমি আশা করি অন্যদের জন্য কার্যকর।

স্টিভেন ডি উপরোক্ত মন্তব্যে যেমন uniqসংলগ্ন পুনরাবৃত্ত লাইনের গণনা করেছেন, তাই আপনাকে প্রথমে লাইনগুলি বাছাই করতে হবে। এরপরে আমরা অনন্য লাইনগুলি খুঁজে পাই তারপরে আবার বাছাই করুন যাতে সর্বাধিক উপস্থিত লাইনগুলি শীর্ষে থাকে।

sort file.txt | uniq -c | sort -nr > output.txt

আউটপুট ফাইলে পুনঃনির্দেশিত হয় output.txt। আপনি যদি কেবল কমান্ড লাইনে ফলাফল দেখতে চান, পুনঃনির্দেশটি সরিয়ে ফেলুন এবং শেষ কমান্ডটি sort -nএমনভাবে পরিবর্তন করুন যাতে সর্বাধিক সাধারণ লাইনটি নীচে থাকবে, অবশ্যই পর্দায় এখনও।


4
আপনি ন্যায়বিচার cat file.txt | sortসঙ্গে প্রতিস্থাপন করতে পারেন sort file.txt। :)
ম্যাচটিএম

1
@ মেট্টেম: এই সূত্রটির অবক্ষয়টি হ'ল আপনি দ্রুত catআরও আকর্ষণীয় কিছু দিয়ে প্রতিস্থাপন করতে পারবেন না । যেহেতু, আপনি জানেন, নেই cat
স্যামবি

1
@ স্যামবি তারপর এটি হিসাবে লিখুন < file.txt sort | uniq -c। এটি সম্পাদনা করা সহজ, এবং এখনও অপ্রয়োজনীয়তা এড়ায় cat
এইচডিভি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.