全名的第一个字符不是用户名
First character of full name not the username
我的任务是将所有用户的登录名、全名和主目录的列表写入文件,这些用户的全名(不是登录名)的第一个字符是“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: ' ~ /^[AZ]/{printf("%s\t%s\n", , )}'
awk -F:
: 以 :
作为字段分隔符调用 awk
。
awk 程序本身
# Filter field 5 containing Real Name
# and regex match it starts with upper-case A or Z
~ /^[AZ]/{
# For each selected entry
# Print a tab formatted list with fields 5 and 6
# witch contains the Real-Name and Home Directory
printf("%s\t%s\n", , )
}
我的任务是将所有用户的登录名、全名和主目录的列表写入文件,这些用户的全名(不是登录名)的第一个字符是“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: ' ~ /^[AZ]/{printf("%s\t%s\n", , )}'
awk -F:
: 以:
作为字段分隔符调用awk
。
awk 程序本身
# Filter field 5 containing Real Name
# and regex match it starts with upper-case A or Z
~ /^[AZ]/{
# For each selected entry
# Print a tab formatted list with fields 5 and 6
# witch contains the Real-Name and Home Directory
printf("%s\t%s\n", , )
}