Personal tools
You are here: Home ブログ matsuyama コマンドラインで CSV を整形するシンプルな方法は?
Document Actions

コマンドラインで 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 すごい。

以上

これよりシンプルな方法を知っている人がいたら是非教えてください。

Category(s)
linux
emacs
The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/matsuyama/formatting-csv/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.