Bashシェルスクリプトでcsvの行と列を入れ替えるために csvtool を使う
シェルスクリプトで csv の行と列を入れ替える必要がありました。
Web を探してみると awk
を使って変換する例がいくつか見つかりましたが、
もっと簡単に実現する方法はないか調べてみたところ、 csvtool
という面白そうなツールがありました。
今日はこのツールを紹介します。
検証環境
$ uname -moi
x86_64 x86_64 GNU/Linux
$ bash -version | head -n 1
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
インストール
まずは csvtool
をインストールします。
$ apt update -y
$ apt install csvtool -y
$ csvtool --help
csvtool - Copyright (C) 2005-2006 Richard W.M. Jones, Merjis Ltd.
- Copyright (C) 2007- Richard W.M. Jones & Christophe Troestler
...
簡単にインストールできました。
csvtool の使い方
使い方を説明するために、簡単な csv ファイルを作成します。
少し分かりにくいコマンドを実行しますが、 5 行 3 列 の csv ファイルを作りたいだけです。
# ***ここは今回のエントリの本筋ではないので説明を省略します!***
$ seq 1 15 | xargs -n 3 echo | sed 's/ /,/g' > test.csv
$ cat test.csv
1,2,3
4,5,6
7,8,9
10,11,12
13,14,15
この csv ファイルを csvtool
を使って 3 行 5 列 の csv に変換してみましょう。
$ csvtool transpose test.csv
1,4,7,10,13
2,5,8,11,14
3,6,9,12,15
このように csv ツールを使うと簡単に csv の行と列を入れ替えることができます。
MacやCentOSなど、Debian系以外のLinuxで利用したい人向け
他のPCへのインストール方法が見つからなかったため、インストールしなくても利用できるように Dockerイメージとして公開 しました。
使い方も記載してあるので、もしよければ使ってください。
ひとこと
最近は Docker の普及に伴い、以前よりも apt
パッケージを比較的容易にインストールできるようになりました。
それでもインストールすることができない環境であれば awk
を使うのが良いでしょう。
ディスカッション
コメント一覧
まだ、コメントがありません