我需要从 /etc/passwd 中找到使用 grep 列出的所有用户主目录

Nar*_*rma 8 grep text-processing

我有一个类似于本网站上另一个问题的问题,个人必须从 /etc/passwd 中找到使用 grep 或 awk 的所有用户的列表。这对我有用,但我尝试翻译它以查找并列出它们的主目录。我已经知道你不能在一行中完成,所以我知道我会使用管道。我已经在网上完成了我的研究,但我无法弄清楚问题是什么。如果我使用 grep 并执行以下操作:

   grep -oE '^[/*/]$' /etc/passwd 
Run Code Online (Sandbox Code Playgroud)

...它可能会给我一个错误,或者它还会显示我不想要的 /bin/bash 文件。我只需要使用 grep 列出的用户名及其主目录!我也不确定 * 是否将其他正斜杠显示为字符,因为某些主目录不止两个 /(正斜杠)。

Ste*_*zzo 18

您可以使用cut特定分隔符上的列拆分文件:

cut -d: -f6 /etc/passwd
Run Code Online (Sandbox Code Playgroud)

或者-f1,6对于列(字段)1 和 6。

  • 做一项工作并且做得很好的简单工具。加一! (4认同)

Zac*_*ady 10

Grep 确实不是以这种方式解析数据的工具;grep 更多用于模式匹配,而您正在尝试进行文本处理。你会想要使用 awk。

awk -F":" '$7 == "/bin/false" {print "User: "$1 "Home Dir: "$6}' /etc/passwd
Run Code Online (Sandbox Code Playgroud)
  • awk - 命令

  • -F":" – 将数据分隔符设置为 :

  • $7 == "/bin/false" – 检查第 7 个数据列是否为 /bin/false

  • {print "User: "$1 "Home Dir: "$6}' – 表示以指定格式打印第一列和第六列。

  • /etc/passwd – 是我们正在处理的文件