如何列出所有用户及其用户名和组名?在 UNIX 系统中

如何列出所有用户及其用户名和组名?在 UNIX 系统中

如何在 UNIX 系统中列出所有用户及其用户名和组名?

我要获取报告表格/etc/passwd文件和/etc/group文件

在 passwd 文件中,我只会获得 GIDS,但我也想从 获得组名/etc/group,它应该出现在一份报告中,就像我想在下面提到的 Fotomat 一样

用户名(用户ID),组名,

答案1

与单awk命令:

awk -F':' 'NR==FNR{ a[$3]=$1; next }{ print $1", "a[$4] }' /etc/group /etc/passwd
  • -F':'- 字段分隔符
  • NR==FNR{ a[$3]=$1; next }- 处理第一个输入文件(即/etc/group):
    • a[$3]=$1- 捕获团队名字 $1使用组标识符 $3作为数组a
    • next- 跳转到下一条记录
  • { print $1", "a[$4] }- 第二个输入文件的操作(即/etc/passwd):
    • $1- 第一个字段;表明用户名
    • a[$4]- 得到团队名字按组 ID(由 field 表示$4

答案2

以下对 GID 上的两个文件进行关系 JOIN,并输出用户名和组名以及:中间值:

join -t : -1 4 -2 3 -o 1.1,2.1 \
    <( sort -t : -k4,4 /etc/passwd ) \
    <( sort -t : -k3,3 /etc/group )

GID 位于passwd文件的第 4 列和文件的第 3 列中group

使用-1-2指定两个输入文件中的连接字段,使用-o指定要从每个文件输出的字段(每个文件的第一个字段)。

连接字段上每个文件的排序是join工作所必需的。

为了得到这个精确的格式要求,只需通过管道传输即可,sed 's/:/, /'用逗号和空格替换冒号。

相关内容