日付と時刻に基づいて行を並べ替える

日付と時刻に基づいて行を並べ替える

カレンダーを表すこのファイルがあります。各ファイルには正確な日付と時刻が含まれ、その後にイベント名と説明が表示されます。

06-12-2016,12:00,gym,leg day
05-04-2018,12:09,gym,hands
09-08-2019,13:08,movies,horror
05-04-2019,14:07,gym,hands
23-03-2018,16:47,dance class
25-04-2019,13:29,dance class
05-12-2017,14:45,songwriting

正しい順序でソートされたイベントを印刷する必要があります。

grep試してみましたがawk正常に動作しません。どうですか?

ベストアンサー1

私は最も簡単なコマンドが次のようになると思います。

sort -t- -k3.1,3.4 -k2,2 file

これは、3番目のフィールドの4文字をソートし、2番目のフィールドをソートして関係を解決します。それでもタイが解決しない場合は、最初のフィールドから始まる他のすべてのフィールドを比較して、順序が自動的に決定されます。

すべてのソートはアルファベット順に行われ、数字は正の整数であるため、追加の数字を追加することはn重要ではありません。

テストサンプル:

06-12-2016,12:00,gym,leg day
05-04-2018,12:09,gym,hands
09-08-2019,13:11,movies,horror
09-08-2019,13:09,movies,horror
09-08-2019,13:08,movies,horror
08-08-2019,13:09,movies,horror
05-04-2019,14:07,gym,hands
23-03-2018,16:47,dance class
25-04-2019,13:29,dance class
05-12-2017,14:45,songwriting

結果の並べ替え:

06-12-2016,12:00,gym,leg day
05-12-2017,14:45,songwriting
23-03-2018,16:47,dance class
05-04-2018,12:09,gym,hands
05-04-2019,14:07,gym,hands
25-04-2019,13:29,dance class
08-08-2019,13:09,movies,horror
09-08-2019,13:08,movies,horror
09-08-2019,13:09,movies,horror
09-08-2019,13:11,movies,horror

おすすめ記事