dd/mm/yyyyとして保存された日付を含むcsvの複数の列の並べ替え

dd/mm/yyyyとして保存された日付を含むcsvの複数の列の並べ替え

csvに保存されているデータをソートしようとしています。

私のデータは次のとおりです。

name,date,time
DEF,01/02/2021,06:00
HIJ,31/01/2021,07:50
ABC,01/02/2021,05:50

*(日付はdd/mm/yyyyとして保存されます)

名前、日付、時系列で並べ替えようとしていますが、さまざまな組み合わせを試してみましたが、わかりません。

名前を使用して昇順に並べ替えsort -t, -k1 -k2,3 -u >> $reportますが、残りの2つの列に対して同じ結果を得ることはできません。

修正する:すみません、一日が過ぎましたが、なぜテーブルを書いたのかわかりません。

ベストアンサー1

ミラー(https://github.com/johnkerl/miller)、そして

name,date,time
DEF,01/02/2021,06:00
HIJ,31/01/2021,07:50
ABC,01/02/2021,05:50
ABC,01/02/2021,05:40

日付と時刻の形式を正しく指定して並べ替えます。

mlr --csv put -S '$tmp=strptime(($date." ".$time), "%d/%m/%Y %H:%M")' \
then sort -f name,tmp \
then cut -x -f tmp ./input.csv>./output.csv

あなたはやる

+------+------------+-------+
| name | date       | time  |
+------+------------+-------+
| ABC  | 01/02/2021 | 05:40 |
| ABC  | 01/02/2021 | 05:50 |
| DEF  | 01/02/2021 | 06:00 |
| HIJ  | 31/01/2021 | 07:50 |
+------+------------+-------+

おすすめ記事