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 |
+------+------------+-------+