2008/08/29
コマンドラインで CSV を整形するシンプルな方法は?
専用ツールを使うことなくコマンドラインで CSV ファイルを読みやすい形式に整形するにはどのようにしたらよいでしょうか。僕が思いついたのは以下の二つです。
tr + expand の方法
tr でカンマをタブに変換し、 expand でいい感じに調整する方法です。
books.csv:
TITLE,ISBN,PAGE プログラミングPerl (VOLUME1),4873110963,708 プログラミングPerl (VOLUME2),4973110971,1303 入門 GNU Emacs 第3版,487311277X,512 Unixパワーツール,4873111420,1355
$ cat books.csv | tr ',' '\t' | expand -t 40,60,80 TITLE ISBN PAGE プログラミングPerl (VOLUME1) 4873110963 708 プログラミングPerl (VOLUME2) 4973110971 1303 入門 GNU Emacs 第3版 487311277X 512 Unixパワーツール 4873111420 1355
-t オプションで適切なタブ幅を与えないといけないのが面倒くさいですが、そこそこ簡単に入力できるコマンドです。
Emacs Lisp を使う方法
もうほとんど十八番ですが、 Emacs Lisp で CSV を整形するスクリプトを書きます。なお、あらかじめ csv-mode [*] をインストールして文字幅修正パッチを当てておく必要があります。
[*] | http://www.emacswiki.org/cgi-bin/wiki/CsvMode |
csvtable:
#!/usr/bin/emacs --script (require 'csv-mode) (find-file (car command-line-args-left)) (csv-align-fields t (point-min) (point-max)) (princ (buffer-string))
以下のように使います。
$ csvtable books.csv TITLE , ISBN , PAGE プログラミングPerl (VOLUME1), 4873110963, 708 プログラミングPerl (VOLUME2), 4973110971, 1303 入門 GNU Emacs 第3版 , 487311277X, 512 Unixパワーツール , 4873111420, 1355
Emacs すごい。
以上
これよりシンプルな方法を知っている人がいたら是非教えてください。
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/matsuyama/formatting-csv/tbping