跳到主要内容

如何使用 awk 列出 UID 小于 100 的用户 ?

参考答案:

awk 是一个强大的文本处理工具,但它通常不直接用于处理系统文件,如 /etc/passwd,该文件包含了系统上所有用户的信息。相反,我们更常用 cutgrepawk 与其他命令结合来处理这样的文件。

但是,如果你确实想使用 awk 来列出 UID 小于 100 的用户,你可以这样做:

awk -F: '$3 < 100 {print $1}' /etc/passwd

解释:

  • -F::设置输入字段分隔符为冒号。在 /etc/passwd 文件中,每个字段之间都是由冒号分隔的。
  • $3 < 100:这是一个条件判断,检查每行的第三个字段(即 UID)是否小于 100。
  • {print $1}:如果上述条件为真,则打印该行的第一个字段,即用户名。

这样,上述命令就会列出所有 UID 小于 100 的用户的用户名。

但是,更常见的方法是使用 getentawk 结合:

getent passwd | awk -F: '$3 < 100 {print $1}'

getent passwd会列出/etc/passwd文件中的所有条目,然后awk` 会按上述方式处理这些条目。

不过,请注意,直接操作或解析 /etc/passwd 或其他系统文件时应该非常小心,确保你知道自己在做什么,避免对系统造成不必要的损害。