কোনও ফাইলের প্রথম কলামে ঘটনা গণনা


10

আমাদের এই ফাইলটি রয়েছে:

1 2 
1 3
1 2
3 3
52 1
52 300

এবং আরও 1000

আমি প্রথম কলামে প্রতিটি মান কতবার ঘটে তার সংখ্যা গণনা করতে চাই।

1  3 
3  1
52 2

এর অর্থ আমরা 1তিনবার দেখেছি ।

পার্ল, এডাব্লুকে বা বাশে আমি কীভাবে এটি করতে পারি?


3
হাই আরশামস! আমি আপনাকে সম্প্রতি খুব অনুরূপ প্রশ্ন জিজ্ঞাসা করেছি যা সমস্ত একই বিষয়ের চারদিকে ঘোরে। আমি নিশ্চিত যে সম্প্রদায়টি আপনাকে সহায়তা করতে চায় তবে আপনি ইতিমধ্যে যা চেষ্টা করেছেন এবং কোথায় আটকে গেছেন তা আপনি আমাদের দেখাতে পারেন? লোকেরা তাদের প্রশ্ন জিজ্ঞাসা করার আগে কিছুটা প্রচেষ্টা দেখানোর জন্য আমাদের প্রয়োজন - আমরা অন্যকে কোনও নির্দিষ্ট জিনিসের জন্য কোড দেওয়ার জন্য জিজ্ঞাসা করা থেকে জড়িত কোনও শিক্ষাই নেই। আমাদের এর ব্যাকগ্রাউন্ডটি আসলে কী তা বলবেন না? আপনি যা চান তা সম্পাদন করার আরও সহজ উপায় আছে এবং কিছু বিমূর্ত সংখ্যার সাথে আমাদের ডামি উদাহরণগুলি অবলম্বন করার দরকার নেই?
slhck

আপনার সাহায্যের জন্য tnx। আমি বিজিপিডাম্প ডেটা নিয়ে কাজ করছি এবং তাদের পার্সিং করছি।
আরশ

উত্তর:


12

যদি ইনপুটটি বাছাই করা হয় তবে আপনি ইউনিক ব্যবহার করতে পারেন:

<infile cut -d' ' -f1 | uniq -c

যদি তা না হয় তবে প্রথমে এটি বাছাই করুন:

<infile cut -d' ' -f1 | sort -n | uniq -c

আউটপুট:

  3 1                                      
  1 3
  2 52

আপনার প্রয়োজনের তুলনায় আউটপুটটি অদলবদল করা হয়, আপনি এটি awk '{ print $2, $1 }'পরিবর্তন করতে পারেন ।

1 3 
3 1
52 2

অ্যাজক আইডিয়ামও রয়েছে, যার জন্য বাছাই করা ইনপুট দরকার হয় না:

awk '{h[$1]++}; END { for(k in h) print k, h[k] }'

আউটপুট:

1 3
52 2
3 1

এখানে যেমন আউটপুটটি হ্যাশ থেকে আসে তাই এটি অর্ডার করা হবে না, এটির sort -nপ্রয়োজন হলে পাস করুন :

awk '{h[$1]++} END { for(k in h) print k, h[k] }' | sort -n

আপনি যদি জিএনইউ অ্যাডকে ব্যবহার করছেন, আপনি এইডকের মধ্যে থেকে বাছাই করতে পারেন:

awk '{h[$1]++} END { n = asorti(h, d, "@ind_num_asc"); for(i=1; i<=n; i++) print d[i], h[d[i]] }'

শেষ দুটি ক্ষেত্রে আউটপুটটি হ'ল:

1 3
3 1
52 2

tnx .its কাজ করেছেন :)
আরশ

আপনি কোড ব্যাখ্যা করতে পারেন ??? awk '{এইচ [$ 1] ++} শেষ {জন্য (কে ইন এইচ) প্রিন্ট কে, এইচ [কে]}' | সাজান-এন
আরশ

3
@ আরশামস: {h[$1]++}প্রতিটি লাইনের জন্য ব্লকটি মূল্যায়ন করা হয়। hএকটি হ্যাশ এবং $1এটি প্রথম কলাম এবং এতে কী হিসাবে ব্যবহৃত হয় h। সুতরাং এই দীর্ঘতা প্রায়শই অনন্য $1দেখা হয়। ENDব্লক ইনপুট শেষে মৃত্যুদন্ড কার্যকর, এবং কি এবং tallies ছাপে করা হয়। sort -nসংখ্যাগতভাবে আউটপুট সাজান।
Thor
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.