如何从一个文件中读取 awk 并将其与另一个文件中的 awk 进行比较

How to read awk from one file and compare it with awk from another file

我的脚本正在输出过去 $2 天内最常登录的用户 $1

#var[$i]=$(awk -F: '{print }' /etc/passwd);
last -s -days | awk '{users[]++} END{for(i in users){print users[i], i}}' | sort -r | head - | awk '{print  " -- " }';

所以输出如下:

username -- (amount of logins)

但我正在尝试从 /etc/passwd 中获取包含名字和姓氏的输出,所以它是:

first and last name, username -- (amount of logins)

但我想出的每一个想法似乎都不适合我。我尝试使用 /etc/passwd 循环 awk,然后在另一个 awk 中使用 -v 或尝试将第二个 awk 的输出放入数组中,然后将其与 /etc/passwd 进行比较,但我无法使任何一个工作。 有人知道如何处理吗?

这应该让你开始:

awk 'NR==FNR{name[]=;next} {u[]++}
    END{for(x in u)printf "%s, %s -- %d\n", name[x],x,u[x]} ' FS=":" /etc/passwd FS=" " <(last)
  • 这将从 last 命令输出所有 first and last name, username -- (amount of logins)
  • 您可能希望通过添加一些必需的选项来调整 last 命令
  • 省略了sorthead,相信你能搞定