从 /etc/passwd 文件中提取用户名

从 /etc/passwd 文件中提取用户名

您将使用什么命令从名为 的数据库中提取所有用户名/etc/passwd,然后按相反的字母顺序对输出进行排序?

答案1

cut -d: -f1 /etc/passwd | sort -r

或者

awk -F: '{print $1}' /etc/passwd | sort -r

实际上,如果您使用的系统使用 nsswitch (例如,现在大多数(如果不是全部)Linux 发行版和许多其他 *nix),您应该使用getent passwd而不是仅仅读取,/etc/passwd因为还有许多其他可能的用户帐户数据源(包括 LDAP 和 nis 或 yp):

getent passwd | cut -d: -f1 | sort -r
getent passwd | awk -F: '{print $1}' | sort -r

答案2

如果您想列出主目录位于 /home 的真实人员,您可以按以下方式过滤列表: grep home /etc/passwd|cut -d: -f1

答案3

sed 's/:.*//' /etc/passwd | sort -r

sed是个s特雷姆编辑itor,用于将文本编辑命令应用于文本数据流。 sed用途常用表达匹配文本行中的模式。 常用表达对于许多 Unix/Linux 命令来说很常见,例如 grep、awk、emacs、vi、perl、python 等。因此学习正则表达式将提高您使用许多不同命令的技能。

上面的 sed 命令s在每行文本上执行(替换)函数。基本s命令的工作原理如下:

    `s/regular expression/replacement/`

sed此命令中的正则表达式:.*匹配行上的第一个冒号(如果有),后跟 0 个或多个 ( *) 的任何其他字符 ( .) 到(隐含的)行结尾。 sed将与此匹配的内容替换为空,并打印结果。

换句话说,此 sed 命令在打印该行之前删除从第一个冒号到该行末尾的内容。

相关内容