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