欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

awk -F: '{print NF}' /etc/passwd 与 awk -F: '{print $NF}' /etc/passwd 区别 通义 chatgpt 有大用

这两个 awk 命令都使用了 -F: 选项来指定字段分隔符为冒号 :,这意味着它们都将 /etc/passwd 文件中的每一行视为由冒号分隔的多个字段。然而,它们之间有一个关键的区别在于 {print NF}{print $NF} 的使用:

  1. [root@localhost ~]# awk -F: '{print NF}' /etc/passwd

  • 这里的 NF 是一个特殊的 awk 变量,代表当前记录(即行)中的字段总数。因此,这个命令将输出 /etc/passwd 文件中每一行的字段数量。

  • 对于标准的 /etc/passwd 文件格式,每行有7个字段(用户名、加密密码、用户ID、组ID、用户描述、主目录和登录Shell),所以此命令会为文件中的每一行输出 7

  • [root@localhost ~]# awk -F: '{print $NF}' /etc/passwd

    • $NF 表示引用当前记录中最后一个字段的内容。这里的 NF 是前述的字段数变量,而 $ 符号用于访问该字段编号对应的字段值。

    • 因此,这个命令会输出 /etc/passwd 文件中每一行最后一个字段的内容。对于 /etc/passwd 文件来说,这将是每个用户的登录Shell路径(例如 /bin/bash/sbin/nologin 等等)。

    总结:

    • {print NF} 输出的是每行的字段数量。

    • {print $NF} 输出的是每行最后一个字段的实际内容。

    这样,虽然两个命令看起来相似,但它们执行的功能和产生的输出是完全不同的。


    普通分类: