Для новичков в командной строке Unix / Linux практически невозможно понять богатство и простоту доступных простых команд.И, хотя это легко сослаться на руководство, это, вероятно, не поможет в поиске конкретного раздела.
Но вы должны взглянуть на руководство, в вашем случае man uniq
.И посмотрите конкретно на -c
.
Итак, who | cut -f1 -d " " | sort -n
(я пропустил grep
с, потому что они действительно что-то значат в моей системе) производит:
и who | cut -f1 -d " " | sort -n | uniq -c
выдает:
1 anneke
2 ljm
1 root
, что именно то, что вы просили.
Ваш цикл while должен, вероятно, считать число строк, как в
who |
grep "10\.1\.109" |
grep -v berianho |
cut -f1 -d " " |
sort -n |
uniq -c |
while read count user ; do
echo -n "$count "
grep -a ^$user: /etc/passwd | cut -f5 -d:
done
или что-то в этом роде.Важно видеть, что теперь вы читаете две переменные, count и user, из каждой строки вывода uniq
.