全名的第一个字符,而不是用户名



我有一项任务要将所有用户的登录名、全名和主目录的列表写入文件,这些用户的全名(而不是登录名(的第一个字符是"A";或";Z";(处理文件/etc/passwd(。

我试过

> cat /etc/passwd | grep -i '^A|^Z' > ex.list

但它也输出名字以A或Z以外的其他字母开头的用户。如何更改?

  • 使用getent获取passwd条目,无论它是本地/etc/passwd文件还是N网络I信息S服务
  • 使用awk过滤所需的用户条目,然后打印它们的真实名称和主目录属性
getent passwd | awk -F: '$5 ~ /^[AZ]/{printf("%st%sn", $5, $6)}'
  • awk -F::调用awk:作为字段分隔符

awk程序本身

# Filter field 5 containing Real Name
# and regex match it starts with upper-case A or Z
$5 ~ /^[AZ]/{
# For each selected entry
# Print a tab formatted list with fields 5 and 6
# witch contains the Real-Name and Home Directory
printf("%st%sn", $5, $6)
}

相关内容

最新更新