您将使用什么命令从名为 的数据库中提取所有用户名/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 命令在打印该行之前删除从第一个冒号到该行末尾的内容。