macでインフォマティクス

macでインフォマティクス

NGS関連のインフォマティクス情報についてまとめています。

CSVやTSVのファイルを整形表示するtableviewコマンド

 

tableviewはOKAMURA YasunobuさんがGithubに公開されている、自動でcsv区切りを認識し、人間が見やすいよう整形表示してくれるコマンド。

 

インストール

GIthub

リリースから各プラットフォームに対応したバイナリをダウンロードする。ここではmac版をダウンロードし、パスの通ったディレクトリに移動した。

https://github.com/informationsea/tableview/releases

mv tableview_darwin_386.dms /usr/local/bin/tableview

> tableview -help

$ tableview -help

tableview [-format FORMAT] [FILE]

 

  -format string

    input format (auto/csv/tsv/tdf) (default "auto")

  -header

    Fix header line

  -help

    Show help

  -license

    Show license

  -logger string

    Log file for debug

  -sheet int

    Sheet index (Excel only) (default 1)

  -version

    Show version

 

Key Binding

 

  j, Ctrl-N, ARROW-DOWN, ENTER

       Scroll forward 1 line

 

  k, Ctrl-P, ARROW-UP

       Scroll back 1 line

 

  h, ARROW-LEFT

       Scroll horizontally left 1 column

 

  l, ARROW-RIGHT

       Scroll horizontally right 1 column

 

  f, Ctrl-V, SPACE, PageDown

       Scroll forward 1 window

 

  [

       Scroll horizontally left 1 character

 

  ]

       Scroll horizontally right 1 character

 

  g, Home, <

       Go to first line

 

  G, End, >

       Go to last line

 

  /pattern

       Search forward in the file

 

  n

       Repeat previous search

 

  N

       Repeat previous search, but in the reverse direction

 

  ?

       Show this help

 

  L

       Show license

 

 

ラン

csvファイルをコマンドライン環境で表示すると、区切り自体が文字なので、とても見にくくなる。

一応excelなどの表計算ソフトに読み込めば表示できるが、中身を確認するだけなら無駄が多い。

open -a excel test1.csv #-aでアプリ指定

 

やはりコマンドライン環境で完結する方がスムーズに進む。 columnコマンドを使えば、","をセパレータと認識して整形表示できる。

column -t -s, test1.csv |less

Header 1  Header 2  Header 3

1         2         3

12        23        34

123       234       345

1234      2345      3456

12345     23456     34567

123456    234567    345678

1234567   2345678   3456789

hogehoge  foo       bar

1         2         3

12        23        34

123       234       345

1234      2345      3456

12345     23456     34567

123456    234567    345678

1234567   2345678   3456789

hogehoge  foo       bar

1         2         3

12        23        34

123       234       345

これで実用上問題ないが、列が増えてくると視認性が悪くなる。また、列が画面に収まりきらないほど増えてくると、見かけ上の改行が入ってごちゃごちゃになってしまう。 その他、オプションを忘れると調べ直さないといけないので、手が止まる。

 

tableviewはおそらくこのあたりの問題の解決を目指して作成されている。testデータを開いてみる。

tableview test1.csv

 

Header 1 | Header 2 | Header 3

       1 |        2 |        3

      12 |       23 |       34

     123 |      234 |      345

    1234 |     2345 |     3456

   12345 |    23456 |    34567

  123456 |   234567 |   345678

 1234567 |  2345678 |  3456789

hogehoge | foo      | bar

       1 |        2 |        3

      12 |       23 |       34

     123 |      234 |      345

    1234 |     2345 |     3456

   12345 |    23456 |    34567

  123456 |   234567 |   345678

 1234567 |  2345678 |  3456789

hogehoge | foo      | bar

       1 |        2 |        3

      12 |       23 |       34

     123 |      234 |      345

       1 |        2 |        3

      12 |       23 |       34

     123 |      234 |      345

       1 |        2 |        3

      12 |       23 |       34

     123 |      234 |      345

       1 |        2 |        3

      12 |       23 |       34

(line: 1/72+   column: 1/3)

縦線 " " で区切りが入り、見やすくなっている(拡張子によるフォーマット認識はdefaultではauto)。十字キーで1行単位スクロール、スペース(下方向)とb(上方向)でページ単位スクロールができる。また、列が多くて画面からはみ出す場合、十字キーの← →で横方向スクロールもできるようになっている。これだけのことで、視認性がかなり改善する。

エスケープキーで終了する。

 

 -header をつけると、ヘッダー行だけ固定して縦方向スクロールができる。

tableview -header test1.csv

Header 1 | Header 2 | Header 3

      12 |       23 |       34

     123 |      234 |      345

       1 |        2 |        3

      12 |       23 |       34

     123 |      234 |      345

       1 |        2 |        3

      12 |       23 |       34

     123 |      234 |      345

       1 |        2 |        3

      12 |       23 |       34

スクロールしてもヘッダー行が残っている。

 

/patternでキーワード検索できる。

"/"を押してから"12345"とタイプ。キーワード12345が検索される。

   12345 |   23456 |   34567

  123456 |  234567 |  345678

 1234567 | 2345678 | 3456789

hogehoge | foo     | bar

       1 |       2 |       3

      12 |      23 |      34

     123 |     234 |     345

    1234 |    2345 |    3456

   12345 |   23456 |   34567

  123456 |  234567 |  345678

 1234567 | 2345678 | 3456789

hogehoge | foo     | bar

       1 |       2 |       3

      12 |      23 |      34

     123 |     234 |     345

       1 |       2 |       3

      12 |      23 |      34

     123 |     234 |     345

       1 |       2 |       3

      12 |      23 |      34

     123 |     234 |     345

       1 |       2 |       3

      12 |      23 |      34

     123 |     234 |     345

       1 |       2 |       3

      12 |      23 |      34

     123 |     234 |     345

       1 |       2 |       3

(line: 6/72   column: 1/3  Search:12345  Found:1/6)

 

CSVの編集やstatisticsを確認したければ、Csvkitはどうでしょうか?坊農さん(HPリンク)にツイート経由で教えていただきました。

 

引用

GitHub - informationsea/tableview: Format CSV file as human readable table