grep只是带有最新时间戳的uniq数据

时间:2018-11-28 13:47:45

标签: linux sorting awk 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)仅选择uniq数据

收据应为:

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命令,但是找不到适合我的解决方案。

谢谢

2 个答案:

答案 0 :(得分:0)

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,以选择每个键的第一个记录(第一个字段)。

答案 1 :(得分:0)

这是我的sortuniq。您可以根据需要使用sort重新排列结果。

$ sort -r file | uniq -w 1
C 2018-11-28 10:04:59.714
B 2018-11-28 10:06:58.993
A 2018-11-28 10:07:59.286

man uniq

 -w, --check-chars=N
              compare no more than N characters in lines