結果

結果

次のファイルがあります。

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サイトの形式はタブを保持しません。実際の出力はタブの整列です。)

おすすめ記事