行の日付を解析してソートする方法はありますか?

行の日付を解析してソートする方法はありますか?

行が次の順序で並べ替えられたファイル(古いものから最新のものまで)がある場合:

<2021-05-10 Mon> <2021-06-04 Fri> <2021-07-04 Sun> <2021-08-01 Sun> ...
<2021-05-10 Mon> <2021-06-04 Fri> <2021-07-22 Thu> <2021-08-11 Wed> ...
<2021-05-10 Mon> <2021-06-04 Fri> <2021-07-18 Sun> <2021-08-01 Sun> ... 
... 

1行で日付順(最新の項目から古い項目まで)を解析してソートするシェルユーティリティはありますか?

<2021-08-01 Sun> <2021-07-04 Sun> <2021-06-04 Fri> <2021-05-10 Mon> ...
<2021-08-11 Wed> <2021-07-22 Thu> <2021-06-04 Fri> <2021-05-10 Mon> ... 
<2021-08-01 Sun> <2021-07-18 Sun> <2021-06-04 Fri> <2021-05-10 Mon> ...
... 

一般的なアプローチも高く評価されます。

ベストアンサー1

別のperl方法:

$ perl -lpe '$_ = join " ", sort {$b cmp $a} /<.*?>/g' < file
<2021-08-01 Sun> <2021-07-04 Sun> <2021-06-04 Fri> <2021-05-10 Mon>
<2021-08-11 Wed> <2021-07-22 Thu> <2021-06-04 Fri> <2021-05-10 Mon>
<2021-08-01 Sun> <2021-07-18 Sun> <2021-06-04 Fri> <2021-05-10 Mon>

これは<...>、埋め込まれた文字列を抽出し、逆の順序で並べ替えてから(YYYY-MM-DD日付でうまく機能するバイト間文字列比較を使用して)印刷し、スペースで連結します。これにより、入力の他の内容(追加のスペースや中に含まれていないテキストを含む<...>)が削除されます。

ここで入力は時系列になっているため、時系列のreverse逆順を使用してインポートすることもできます。

perl -lpe '$_ = join " ", reverse /<.*?>/g'

おすすめ記事