以下の形式のように日付を並べ替えようとしていますが、日、日付、月、年に基づいて並べ替えることはできません。いくつかの他の方法を試しましたが、うまくいきません。どんな意見でも大変感謝いたします。
私が試したこと:
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
キーの終わりはデフォルトで行の終わりに設定されます。
答え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を再利用する必要があるかもしれません。