次のファイルがあります。
2017-07-30 A
2017-07-30 B
2017-07-30 B
2017-07-30 A
2017-07-30 A
2017-07-30 C
2017-07-31 A
2017-07-31 B
2017-07-31 C
2017-07-31 B
2017-07-31 C
各行は、イベント(A、B、C)とイベントが発生した日付を示します。 1日に各タイプのイベント数を計算したいです。これはで行うことができ、sort file | uniq -c
出力は次のようになります。
3 2017-07-30 A
2 2017-07-30 B
1 2017-07-30 C
1 2017-07-31 A
2 2017-07-31 B
2 2017-07-31 C
しかし、各イベントタイプを列として使用したいと思います。
A B C
2017-07-30 3 2 1
2017-07-31 1 2 2
これを行うことができる非常に一般的なコマンドラインツールはありますか?必要に応じてすべてのイベントタイプ(A、B、C)を事前に知っていると仮定できますが、そうでない場合はそれがより良いです。繰り返しますが、各イベントが1日に1回以上発生すると仮定できますが(出力にゼロがないことを意味します)、これが必要でない場合はここで問題ありません。
ベストアンサー1
「かなり一般的」に以下が含まれる場合GNUデータの混合、その後
datamash -Ws crosstab 1,2 < file
前任者。
$ datamash -Ws crosstab 1,2 < file
A B C
2017-07-30 3 2 1
2017-07-31 1 2 2
(残念ながら、Webサイトの形式はタブを保持しません。実際の出力はタブの整列です。)