使用 awk、uniq 和 sort 获取列中具有最大值的行

使用 awk、uniq 和 sort 获取列中具有最大值的行

我有一个具有下一个格式的文件

2011-12-01 user1 access1
2011-12-01 user1 access2
2011-12-01 user2 access2
2011-12-01 user4 access2
2011-12-02 user1 access1
2012-01-01 user3 access1
2012-01-01 user4 access2

我想要一个输出,为每个用户显示最后日期,所以

2011-12-02 user1 access1
2011-12-01 user1 access2
2011-12-01 user2 access2
2012-01-01 user3 access1
2012-01-01 user4 access2

我尝试过这样的事情:

less myfile.txt | sort -k1r | uniq -f 1  | sort -b -k1

但它似乎工作不正常。

谢谢你的帮助!

ベストアンサー1

我想你想要

cat myfile.txt| sort -k1 -r | sort --unique --stable -k2,3

(请参阅我对上面的评论cat)。第一种排序会将最新日期放在顶部。第二种排序将按用户+访问权限排序,但是,通过给出--stable,将保留具有相同用户+访问权限组合的行的先前顺序,即最新的仍位于顶部。给出--unique,仅显示具有相同用户+访问权限组合的运行的第一行。 (| uniq -f1我想,如果它恰好是你的类别没有的 GNU 扩展,你可以将其替换为。)

おすすめ記事