首页 > 解决方案 > grep 只是具有最新时间戳的 uniq 数据

问题描述

我有一个文件 test.txt

A 2018-11-28 10:04:59.286
A 2018-11-28 10:07:59.286
B 2018-11-28 10:04:58.993
B 2018-11-28 10:06:58.993
C 2018-11-28 10:04:55.714
C 2018-11-28 10:04:59.714

我想根据最新的时间戳为每个(A,B,C)选择唯一的数据

结果应该是:

A 2018-11-28 10:07:59.286
B 2018-11-28 10:06:58.993
C 2018-11-28 10:04:59.714

我使用了 sort+uniq 命令,但找不到适合我的解决方案。

谢谢

标签: linuxsortingawkuniq

解决方案


sort/awk

$ sort -k1,1 -k2r file | awk '!a[$1]++'

A 2018-11-28 10:07:59.286
B 2018-11-28 10:06:58.993
C 2018-11-28 10:04:59.714

从第二个字段开始反向排序,管道到awk每个键(第一个字段)选择第一条记录。


推荐阅读