如何对时间/日期输出进行排序?

如何对时间/日期输出进行排序?

让我们

16:00_17/06/2022
12:31_10/05/2022
10:34_07/03/2023
11:17_12/04/2022
12:37_10/05/2022

我想按升序排列此输出以获得以下内容:

11:17_12/04/2022
12:31_10/05/2022
12:37_10/05/2022
16:00_17/06/2022
10:34_07/03/2023

我尝试过sort -t '_' -k2 -k1sort -t '/' -k3 -k2 -k1但是得到的却是混乱的安排。

有人可以提出什么建议吗?

谢谢。

答案1

假设您的输入格式是 hour:minute_day-of-month/month/year,那么一个方便的选项可能是dsortdateutils包中使用:

$ dateutils.dsort --input-format='%H:%M_%d/%m/%Y' dates
11:17_12/04/2022
12:31_10/05/2022
12:37_10/05/2022
16:00_17/06/2022
10:34_07/03/2023

如果您需要使用普通的 GNU 来执行此操作sort,那么只要字段具有固定宽度,那么您就可以使用扩展的F.C(field.character)形式的键定义来将第一个/-delimited 字段“拆分”为H:Md并首先对后者进行排序,例如。

sort -t/ -k3,3 -k2,2 -k1.7,1.8 -k1.1,1.5 dates

相关内容