如何在linux中根据日、日、月、年对日期进行排序

如何在linux中根据日、日、月、年对日期进行排序

我正在尝试对日期进行排序(如下面的格式),但无法根据日、日期、月和年对它们进行排序。我尝试了几种不同的方法,但效果不佳。任何投入将不胜感激。

我尝试过的:

rpm -qa --queryformat '%{installtime:date}\n' | 
    sort -n
rpm -qa --queryformat '%{installtime:date}\n' | 
    awk '{$1=""; print $0}' | sort -t- -k2.1,2.3
rpm -qa --queryformat '%{installtime:date}\n' | 
    awk '{$1=""; print $0}' | sort -n -k3 -k2 -k1

格式/输出:

Wed 17 May 2017 01:41:05 PM CDT
Wed 17 May 2017 01:41:05 PM CDT
Wed 17 May 2017 01:41:06 PM CDT
Wed 17 May 2017 01:41:06 PM CDT
Wed 28 Apr 2021 08:56:30 AM CDT
Wed 29 Jan 2020 04:57:23 PM CST
Wed 29 Jan 2020 04:57:24 PM CST

答案1

使用sort-M选项以“Jan”..“Dec”顺序对月份进行排序:

 sort -k4,4n -k3,3M -k2,2n    

将按年、月、最后的日期对输出进行排序。

的关键规范形式-k field1[,field2]可能非常重要(尽管在本例中并不那么重要)。如果field2缺少某个键,则该键的末尾默认为该行的末尾。

答案2

你可以这样做:

$ rpm -qa --last --queryformat '%{installtime:date}\n'

或者可能:

$ rpm -qa --last --queryformat '%{installtime:date}\n' | tac

以相反的顺序列出它们

答案3

date您可以使用(查看man date)转换日期

"%s     seconds since the Epoch (1970-01-01 00:00 UTC)"

例如

]$ date -d "Wed 17 May 2017 01:41:05 PM CDT" +%s
1495046465

然后在论文上使用sort然后转换回日期

date -d @1495046465

您可能必须man date再次使用 TZ

相关内容