我有一项任务要将所有用户的登录名、全名和主目录的列表写入文件,这些用户的全名(而不是登录名(的第一个字符是"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)
}