Macos 从';最后';unix中的命令-有例外
如果我在OS X上运行此操作:Macos 从';最后';unix中的命令-有例外,macos,unix,sed,awk,Macos,Unix,Sed,Awk,如果我在OS X上运行此操作: last -10 | awk '{print $1}' 我得到: 切碎 切碎 切碎 chrihopk 重新启动 关机 切碎 切碎 切碎 克里霍普 如何使用sed或awk获得最频繁的用户“chop” 问题的附加编辑: 我们的本地管理员帐户会干扰结果(用户名:support),而且我们的客户端上通常会有一个新的启动程序。 我如何修改 last -1 要省略以下内容并返回最后一个有效用户名: 支持 重新启动 关闭 谢谢如果您将其导入排序,您将获得一个易于分析的数
last -10 | awk '{print $1}'
我得到:
切碎切碎
切碎
chrihopk
重新启动
关机
切碎
切碎
切碎
克里霍普 如何使用sed或awk获得最频繁的用户“chop” 问题的附加编辑:
我们的本地管理员帐户会干扰结果(用户名:support),而且我们的客户端上通常会有一个新的启动程序。
我如何修改
last -1
要省略以下内容并返回最后一个有效用户名:
支持重新启动
关闭
谢谢如果您将其导入排序,您将获得一个易于分析的数据列表,以查找最频繁的用户,尽管我不知道如何在没有脚本语言的情况下查找该用户
bash$ last -10 | awk '{print $1}' | sort | uniq -c | sort -nr | head -1 | awk '{print $2}'
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
以下管道提供了一个起点,我确信可以对其进行优化:
last | awk '{A[$1] += 1; for (v in A) print A[v],v}' | sort -ur | head -n 1 | awk '{print $2}'
如果你愿意
- 具有登录次数的用户的良好升序列表(仅
内容确保不计算空行):$0!~/^$/
- 具有登录号码的用户名:
将
附加到上述代码| tail-1
- 与awk中的上述相同(更快):
- 仅在awk中使用用户名:
从上述代码中删除最后一个
m,
- 刚刚好
last -10 |awk '{ user[$1]++}
END{
t=0
for(i in user){
if (user[i]>t) {
t=user[i]
u=i
}
}
print t,u
}'
使用gawk,您可以使用asort、asorti内部函数来回答您的编辑,将数值参数保留为最后一个,并使用如下方式:
last | egrep -v 'support|reboot|shutdown'
然后像其他答案一样,将这些信息输入到
awk
。@earcar:你每天都会学到新的东西。经过测试,它似乎工作。。。不过,我对它的工作原理感到困惑,因为我可以找到零个文档来说明它会这样做。。。这是一百万年前的一个兼容性选项吗?@eacar:我知道排序-u,并在适当的地方使用过它。。。哪里有文件证明,sort-un
的行为不同于sort-n-u
?太多的管道链接和丑陋。sort-un
在Mac OS X(GNU textutils 1.14)上对我不起作用@adam:我在osx 10.5上,它可以工作:sort(GNU coreutils)5.93(没有macports或类似的)@stobor:-u-n
和-un
之间的行为没有任何区别。。你有什么版本的排序?+1表示sort-un
,尽管我不知道它在哪里表示这种组合的功能…完美。第一个选择正是我想要的。非常感谢。Hi earcar-抱歉,你说得很对,但我仍在测试这些解决方案,现在准备补充这个问题。我刚才正在处理一些项目,但现在又回到了这个问题上。编辑在上面。谢谢你的意见。chris您应该使用代码或blockquote功能格式化您的问题,使其更具可读性。
last -10 |awk '{ user[$1]++}
END{
t=0
for(i in user){
if (user[i]>t) {
t=user[i]
u=i
}
}
print t,u
}'
last | egrep -v 'support|reboot|shutdown'