【问题标题】:First character of full name not the username全名的第一个字符不是用户名
【发布时间】:2022-01-05 17:00:36
【问题描述】:

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

我试过了

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

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

【问题讨论】:

  • 这样可以:getent passwd | awk -F: '$5 ~ /^[AZ]/{printf("%s\t%s\n", $5, $6)}'

标签: bash shell grep


【解决方案1】:
  • 使用getent获取passwd条目,无论它是本地/etc/passwd文件还是N网络化I信息S服务。
  • 使用awk 过滤所需的用户条目,然后打印他们的真实姓名和主目录属性。
getent passwd | awk -F: '$5 ~ /^[AZ]/{printf("%s\t%s\n", $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("%s\t%s\n", $5, $6)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多