Ubuntu: datamash コマンドでCSVを縦横変換

コマンドラインでCSVを縦横変換出来るdatamashコマンドが便利なのでメモ。

まずはインストール。

$ sudo apt install datamash -y

CSVファイルを用意する。

1,2,3
hoge,fuga,piyo
foo,bar,baz

datamashコマンドを実行。

$ cat tmp.csv | datamash transpose -t,

1,hoge,foo
2,fuga,bar
3,piyo,baz

縦横が入れ替わって出力される。

列数が不揃いな場合は、 –no-strict オプションを使えば足りないカラムは N/A という文字で埋めてくれる。