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「1月」..「12月」の順序で月をソートします。

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

出力は年、月、最後の日付でソートされます。

のコア標準形式は-k field1[,field2]非常に重要かもしれません(この場合はそれほど重要ではありませんが)。キーが欠落している場合、field2キーの終わりはデフォルトで行の終わりに設定されます。

おすすめ記事