পার্ল
এই কোডটি সমস্ত কলামের উপস্থিতি গণনা করে এবং তাদের প্রত্যেকের জন্য একটি সাজানো প্রতিবেদন মুদ্রণ করে:
while (<>) {
@Fields = split /\s+/;
for $i ( 0 .. $#Fields ) {
$result[$i]{$Fields[$i]}++
};
}
for $j ( 0 .. $#result ) {
print "column $j:\n";
@values = keys %{$result[$j]};
@sorted = sort { $result[$j]{$b} <=> $result[$j]{$a} || $a cmp $b } @values;
for $k ( @sorted ) {
print " $k $result[$j]{$k}\n"
}
}
পাঠ্যটি কলামওয়ালু হিসাবে সংরক্ষণ করুন.পিএল
এটি হিসাবে চালান: perl columnvalues.pl files*
ব্যাখ্যা
লুপের সময় শীর্ষ স্তরে:
* সম্মিলিত ইনপুট ফাইলগুলির প্রতিটি লাইন ধরে লুপ করুন
* লাইনটি @ ফিল্ডস অ্যারেতে বিভক্ত করুন
* প্রতিটি কলামের জন্য ফলাফল অ্যারে অফ-হ্যাশ ডেটা কাঠামো বৃদ্ধি করুন
লুপের জন্য শীর্ষ স্তরে:
* ফলাফলের অ্যারের উপরে লুপ
করুন * কলাম নম্বরটি মুদ্রণ করুন * সেই কলামে
ব্যবহৃত মানগুলি অর্জন করুন * সংখ্যার সংখ্যা
অনুসারে মানগুলি বাছাই করুন * মানের
ভিত্তিতে গৌণ সাজান (উদাহরণস্বরূপ বি বনাম জি বনাম) মি বনাম z)
* বাছাই করা তালিকা ব্যবহার করে ফলাফলের হ্যাশটির মাধ্যমে আইট্রেট
করুন * প্রতিটি সংখ্যার মান এবং সংখ্যা মুদ্রণ করুন
@ ডেনিস দ্বারা সরবরাহিত নমুনা ইনপুট ফাইলের ভিত্তিতে ফলাফল
column 0:
a 3
z 3
t 1
v 1
w 1
column 1:
d 3
r 2
b 1
g 1
m 1
z 1
column 2:
c 4
a 3
e 2
.csv ইনপুট
যদি আপনার ইনপুট ফাইলগুলি .csv হয় তবে এতে পরিবর্তন /\s+/
করুন/,/
অবরুদ্ধকরণ
কুরুচিপূর্ণ প্রতিযোগিতায় পার্ল বিশেষভাবে সজ্জিত।
এই ওয়ান-লাইনার একই কাজ করে:
perl -lane 'for $i (0..$#F){$g[$i]{$F[$i]}++};END{for $j (0..$#g){print "$j:";for $k (sort{$g[$j]{$b}<=>$g[$j]{$a}||$a cmp $b} keys %{$g[$j]}){print " $k $g[$j]{$k}"}}}' files*