有文件/etc/group.格式为“组名:密码:标识符:以空格分隔的用户列表” 如何打印用户数最多的组的名称?谢谢。
答案1
getent group | awk -F '[,:]' '{ print $1, NF - 3 }' | sort -k2,2n
这将输出一个组名称列表,后跟组成员数量,按组成员数量排序。我假设问题的文本是错误的,并且小组成员列表是用逗号分隔的。
解析此结果以挑选出拥有最多组成员的组将很容易。
getent group
将获取与文件格式相同的当前组列表/etc/group
。此命令还将查询 NIS/YP 或 LDAP 等目录服务(如果正在使用)。
该awk
代码将根据逗号或冒号将行分成多个字段,并打印第一个字段(组名称),后跟字段总数减三(减三是不计算组名称、密码和 GID 字段) )。
最终sort
将仅根据第二列(即小组成员的数量)进行数字排序。