【问题标题】:grep just uniq data with latest time-stamp [closed]grep 只是具有最新时间戳的 uniq 数据[关闭]
【发布时间】:2019-04-30 10:45:15
【问题描述】:

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

谢谢

【问题讨论】:

  • 请点击 edit 并添加您尝试过的 sort+uniq 命令,因为这里预计您会添加您的努力来质疑..

标签: linux sorting awk uniq


【解决方案1】:

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

【讨论】:

  • 您好,感谢您的帮助。它就像一个魅力:)
【解决方案2】:

这是我的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

【讨论】:

  • 您好,感谢您的帮助。它就像一个魅力:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 2014-02-06
  • 2021-12-19
  • 1970-01-01
  • 2021-12-24
  • 2013-04-23
相关资源
最近更新 更多