Quick response
perl -nle 'm"\w+:x:\d+:\d+:[^:]+:\S+:(\S+)\s*$" and $h{$1}++;
END{ print "$_: $h{$_}" foreach sort { $h{$b} <=> $h{$a} } keys %h }' \
/etc/textfile
.
:
/bin/bash: 7
/sbin/nologin: 1
Perl awk,
perl -F: -lane '++$sh{$F[-1]};
END{print "$_: $sh{$_}" for sort { $sh{$b} <=> $sh{$a} } keys %sh}' \
/etc/textfile
, , .
perl -F: -lane '($sh = pop @F) =~ s/\s+$//; ++$sh{$sh};
END{print "$_: $sh{$_}" for sort { $sh{$b} <=> $sh{$a} } keys %sh}' \
/etc/textfile
, :
perl -pe 's/[^\S\n]+$//' /etc/textfile |
perl -F: -lane 'print $F[-1]' |
sort | uniq -c | sort -nr
, .
] ; s , .
7 /bin/bash
1 /sbin/nologinscript
script, vibe off daxim & rsquo; s answer —
#! /bin/sh
perl -MUser::pwent -le \
'$_->shell && print $_->shell while $_ = getpwent' |
sort | uniq -c | sort -nr
, 0.
don & rsquo; t /etc/passwd, script
#! /bin/sh
if [ $# -eq 0 ]; then
echo Usage: $0 passwd-file .. 1>&2
exit 1
fi
perl -pe 's/[^\S\n]+$//' "$@" |
perl -lne 'm|\w+:x:\d+:\d+:[^:]+:\S+:(\S+)$| && print $1' |
sort | uniq -c | sort -nr
, , , , . .