#! /usr/bin/env pike
string name(array pwrec)
{
if(stringp(pwrec[4]))
{
string name = (pwrec[4]/" ")[0];
if(sizeof(name)&&name[0]>='A'&&name[0]<='Z')
return name;
}
return 0;
}
int main(int argc, array(string) argv)
{
mapping(string:int) stats = ([]);
int count, countall;
while(array tmp=getpwent())
{
countall++;
string s = name(tmp);
s && count++;
stats[s]++;
}
array(string) sorted_names = sort(indices(stats)) - ({0});
foreach(sorted_names, string name)
{
write("%s\:\t%d\n", name, stats[name]);
}
write("%d records processed, %d had (possible) names, %d unique\n",
countall, count, sizeof(sorted_names));
return 0;
}