从unix中的'last'命令中获取频繁的用户名 - 有例外

cho*_*hop 4 unix macos awk sed

如果我在OS X上运行它:

last -10 | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

我得到:剁


chrihopk
重启
关机



chrihopk

如何使用sed或awk获取最频繁的用户'chop'?

对问题的其他编辑:
我们的本地管理员帐户会干扰结果(用户名:支持),并且我们通常会在客户端框中添加新的启动器.
我怎么能修改

last -1  
Run Code Online (Sandbox Code Playgroud)

省略以下内容并返回最后一个有效用户名:

支持
重启
关机

谢谢

Sto*_*bor 9

bash$ last -10 | awk '{print $1}' | sort | uniq -c | sort -nr | head -1 | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

sort -un 做了什么,但我不确定是什么......

bash$ echo -e 'bob\nbob\ncat\ncat\ncat\ndog'
bob
bob
cat
cat
cat
dog
bash$ echo -e 'bob\nbob\ncat\ncat\ncat\ndog' | sort | uniq -c | sort -nr
      3 cat
      2 bob
      1 dog
bash$ echo -e 'bob\nbob\ncat\ncat\ncat\ndog' | sort -un
bob
bash$ echo -e 'bob\nbob\ncat\ncat\ncat\ndog' | sort | uniq -c | sort -nr | head -n1 | awk '{print $2}'
cat
Run Code Online (Sandbox Code Playgroud)


Car*_*ino 6

如果你想

  • 一个漂亮的升序用户列表,其中包含登录次数(这些$0!~/^$/东西只能确保空行不计算):

    last | awk '$0!~/^$/ {print $1}' | sort | uniq -c | sort
    
    Run Code Online (Sandbox Code Playgroud)
  • 用户名和登录号码:

    附加| tail -1到上面的代码.

  • 在awk(更快)中与上面相同:

    last | awk '{a[$1]++}END{m=0;for(v in a){if(a[v]>m){m=a[v];u=v}}print m,u}'
    
    Run Code Online (Sandbox Code Playgroud)
  • 仅在awk中的用户名:

    m,从上面的代码中删除最后一个.