次の行を含むファイル(test.csv)があります。
2016-08-23 00:00:00,270113184103681474
2016-08-23 00:00:00,270113184101689340
2016-08-23 00:00:00,270113184103681474
2016-08-23 00:00:00,270113184101689340
2016-08-23 01:00:00,270113184103681474
2016-08-23 01:00:00,270113184101689340
最初の列の各列の合計行数と2番目の列の一意の項目数を取得したいと思います。上記の行に必要な出力は次のとおりです。
2016-08-23 00:00:00, 4, 2
2016-08-23 01:00:00, 2, 2
単純なgrep / awkソリューションはありますか?
ベストアンサー1
素朴な解決策は、各発生回数を数え、以前に見たことがないかどうかを追跡することです。
だから:
awk -F, '{ t[$1]++; seen[$0]++; if (seen[$0] == 1) { u[$1]++ } }
END { for (a in t) { print a "," t[a] "," u[a] } }'
最初の行は、その日付がに表示される合計回数を追跡しますt
。各行を何回見たかを追跡し、seen
今回が初めて見たものであればそれが固有であることを知ってに計算しますu
。
2行目は結果を繰り返し印刷します。