`cat passwd | awk -F':' '{printf $1}'` 起什么作用?

`cat passwd | awk -F':' '{printf $1}'` 起什么作用?

这个命令是做什么的?我怎么在终端上看到它,因为我写的时候什么都没有cat passwd | awk -F':' '{printf $1}'

答案1

cat passwdpasswd输出当前目录中文件的内容。awk然后,该命令解析它,使用:作为字段分隔符来拆分每行,并打印第一个字段。

如果您没有得到任何输出,请执行以下操作:

  • passwd当前目录中没有该文件
  • 有一个文件,但是它是空的
  • 有一个文件,但是其中所有行的第一个字段都是空的(以 开头的行:)。

该命令可能要执行的操作是解析/etc/passwd。在这种情况下,您可以执行以下操作:

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

此外,除非您想将命令限制为本地帐户,否则请使用getent passwd而不是使用文件/etc/passwd

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

答案2

我认为这是一个从系统中提取所有用户名的格式错误的命令:

  • cat passwd打印文件的输出passwd,大概/etc/passwd
  • awk -F':' {printf $1}使用分隔符分隔输入(由 cat 提供):,然后仅打印第一个标记,即用户名。

它不起作用,因为/etc默认情况下不在路径变量中,因此必须提供路径,而不仅仅是文件名。此外,结果无法正确解析,因为 awkprintf不会在末尾放置换行符,而 则相反print

IMO 正确的命令如下:

cat /etc/passwd | awk -F':' '{print $1}'

相关内容