web-dev-qa-db-ja.com

コマンドラインCSVビューア?

Linux/OS X用のコマンドラインCSVビューアを知っている人はいますか?私はlessのようなものを考えていますが、もっと読みやすい方法で列を空けています。 (OpenOffice CalcやExcelで開いても問題ありませんが、必要なデータでは見るだけでは、やり過ぎになります。

277
Benjamin Oakes

これを使うこともできます。

column -s, -t < somefile.csv | less -#2 -N -S

columnは標準的なunixプログラムで、非常に便利です。各列の適切な幅を見つけ、テキストを適切なフォーマットの表として表示します。

注:空のフィールドがあるときはいつでも、そこに何らかの種類のプレースホルダーを入れる必要があります。そうしないと、列は後続の列とマージされます。次の例は、sedを使用してプレースホルダーを挿入する方法を示しています。

$ cat data.csv
1,2,3,4,5
1,,,,5
$ sed 's/,,/, ,/g;s/,,/, ,/g' data.csv | column -s, -t
1  2  3  4  5
1           5
$ cat data.csv
1,2,3,4,5
1,,,,5
$ column -s, -t < data.csv
1  2  3  4  5
1  5
$ sed 's/,,/, ,/g;s/,,/, ,/g' data.csv | column -s, -t
1  2  3  4  5
1           5

,,の代わりに, ,を2回使用することに注意してください。 1回だけ実行すると、2番目のコンマはすでに一致しているので、1,,,41, ,,4になります。

381
user437522

次のようにしてcsvtoolをインストールすることができます(Ubuntuの場合)。

Sudo apt-get install csvtool

そして実行します。

csvtool readable filename | view -

たとえあなたが非常に長い値を持つセルを持っていたとしても、これはそれを読み取り専用のvimインスタンスの中で素晴らしくそしてかなり内側にするでしょう。

91
d_chall

csvkit をご覧ください。それはUNIXの哲学(それらが小さく、単純で、単一目的であり、組み合わせることができることを意味する)に準拠するツールのセットを提供します。

以下は、無料の Maxmind World Citiesデータベース からドイツで最も人口の多い10の都市を抽出し、その結果をコンソール読み取り可能な形式で表示する例です。

$ csvgrep -e iso-8859-1 -c 1 -m "de" worldcitiespop | csvgrep -c 5 -r "\d+" 
  | csvsort -r -c 5 -l | csvcut -c 1,2,4,6 | head -n 11 | csvlook
-----------------------------------------------------
|  line_number | Country | AccentCity | Population  |
-----------------------------------------------------
|  1           | de      | Berlin     | 3398362     |
|  2           | de      | Hamburg    | 1733846     |
|  3           | de      | Munich     | 1246133     |
|  4           | de      | Cologne    | 968823      |
|  5           | de      | Frankfurt  | 648034      |
|  6           | de      | Dortmund   | 594255      |
|  7           | de      | Stuttgart  | 591688      |
|  8           | de      | Düsseldorf | 577139      |
|  9           | de      | Essen      | 576914      |
|  10          | de      | Bremen     | 546429      |
-----------------------------------------------------

CsvkitはPythonで書かれているため、プラットフォームに依存しません。

57
Kai Sternad

Tabview:軽量のpython cursesコマンドラインCSVファイルビューア(そしてリストのリストのような他のPythonの表データ)もここにあります Github

特徴:

  • Python 2.7以降、3.x
  • Unicodeのサポート
  • 表形式データを簡単に視覚化するためのスプレッドシートのようなビュー
  • Vimのようなナビゲーション(h、j、k、l、g(上)、G(下)、12Gの12行目に移動、m - マーク、 ' - 後退マークなど
  • 固定ヘッダ行を切り替える
  • 列幅とギャップを動的に変更
  • 任意の列で昇順または降順に並べ替えます。数値の「自然な」順序ソート。
  • 全文検索、検索結果の間を巡回するnとp
  • 完全なセルの内容を表示するには「Enter」
  • セルの内容をクリップボードに入れる
  • F1か?キーバインド用
  • Pythonのコマンドラインから任意の表形式のデータを視覚化するために使用することもできます(例:list-of-lists)
40
Scott Hansen

もしあなたがより熱心であれば、 CSVプラグイン を使ってください。これはjuuust beautiful です。

28
P. Myer Nore

Nodejsパッケージ tecfu/tty-table は、これを正確に行うためにグローバルにインストールすることができます。

apt-get install nodejs
npm i -g tty-table
cat data.csv | tty-table

tecfu/tty-table

ストリームも処理できます。

詳しくは、 端末の使用法に関するドキュメントはこちら を参照してください。

16
user3751385

私のFOSSプロジェクト CSVfix あなたは "ASCIIアート"テーブルフォーマットでCSVファイルを表示することができます。

10
anon

Ofriの答えはあなたが要求したすべてをあなたに与えます。しかし、コマンドを覚えたくないのであれば、これを〜/ .bashrc(または同等のもの)に追加することができます。

csview()
{
local file="$1"
sed "s/,/\t/g" "$file" | less -S
}

これはOfriの答えとまったく同じですが、シェル関数で囲み、less -Sオプションを使用して行の折り返しを停止している点が異なります(lessをoffice/oocalcのように動作させる)。

新しいシェルを開き(または現在のシェルでsource ~/.bashrcを入力して)、次のコマンドを使用してコマンドを実行します。

csview <filename>

8
pisswillis

xsv は視聴者以上のものです。特に大規模なデータセットを扱う場合は、コマンドラインでのほとんどのCSVタスクにお勧めします。

8
smartmic

私はピスウィリスの答えを長い間使いました。

csview()
{
    local file="$1"
    sed "s/,/\t/g" "$file" | less -S
}

しかし、私が http://chrisjean.com/2011/06/17/view-csv-data-from-the-command-line で見つけたいくつかのコードを組み合わせたものです:

csview()
{
    local file="$1"
    cat "$file" | sed -e 's/,,/, ,/g' | column -s, -t | less -#5 -N -S
}

私にとってそれがよりうまく機能する理由は、幅の広い列をよりよく処理するためです。

6
Tom Weiss

Tabulator パッケージのtbllessは、unix columnコマンドをラップし、さらに数値列を揃えます。

4
stefan.schroedl

これは(おそらくあまりにも)簡単なオプションです:

sed "s/,/\t/g" filename.csv | less
3
Ofri Raviv

TxtSushi を使えば、次のことができます。

csvtopretty filename.csv | less -S
2
Keith

コマンドラインからCSVをフォーマットするためにこのcsv_view.shを書きました。これは各列の最適な幅を計算するためにファイル全体を読み込みます(Perlを必要とします。フィールドにカンマがないと仮定します。


#!/bin/bash

Perl -we '
  sub max( @ ) {
    my $max = shift;

    map { $max = $_ if $_ > $max } @_;
    return $max;
  }

  sub transpose( @ ) {
    my @matrix = @_;
    my $width  = scalar @{ $matrix[ 0 ] };
    my $height = scalar @matrix;

    return map { my $x = $_; [ map { $matrix[ $_ ][ $x ] } 0 .. $height - 1 ] } 0 .. $width - 1;
  }

  # Read all lines, as arrays of fields
  my @lines = map { s/\r?\n$//; [ split /,/ ] } ;

  my $widths =
    # Build a pack expression based on column lengths
    join "",

    # For each column get the longest length plus 1
    map { 'A' . ( 1 + max map { length } @$_ ) }

    # Get arrays of columns
    transpose

    @lines
  ;

  # Format all lines with pack
  map { print pack( $widths, @$_ ) . "\n" } @lines;
' $1 | less -NS

2
Jean Vincent

さらに別の多機能CSV(そしてそれだけではない)操作ツール: Miller 。それ自身の記述からすると、それはawk、sed、cut、join、そしてCSV、TSV、そして表形式のJSONのような名前付きデータのソートのようなものです。 (githubリポジトリへのリンク: https://github.com/johnkerl/miller

1

私は tablign をこれらの目的のために作成しました。と一緒にインストール

[Sudo -H] pip3 install tablign

そして

$ cat test.csv
Header1,Header2,Header3
Pizza,Artichoke dip,Bob's Special of the Day
BLT,Ham on rye with the works,
$ tablign test.csv
Header1 , Header2                   , Header3
Pizza   , Artichoke dip             , Bob's Special of the Day
BLT     , Ham on rye with the works ,

データがコンマ以外のもので区切られている場合にも機能します。最も重要なのは、それがpreserveデリミタなので、[Markdown、CSV、LaTeX]の文法を犠牲にすることなくASCIIテーブルをスタイルするのにも使えるということです。

1
Nico Schlömer

Tabviewは本当にいいです。 LibreOfficeおよびgvimのcsvプラグインにバグがある、きれいに表示される200 MB以上のファイルで動作します。

アナコンダ版はこちらから入手できます。 https://anaconda.org/bioconda/tabview

1
shankerj

この短いコマンドラインスクリプトはpythonにあります。 https://github.com/rgrp/csv2ascii/blob/master/csv2ascii.py

ただダウンロードしてあなたのパスに置いてください。使い方はこんな感じ

csv2ascii.py [options] csv-file-path

csv-file-pathにあるcsvファイルをASCII形式に変換して、結果を標準出力に返します。 csv-file-path = ' - 'の場合は、標準入力から読み込みます。

オプション:

 -h、--helpこのヘルプメッセージを表示して終了する
 -columns = COLUMNS 
この数の列のみを表示します
0
Rufus Pollock

この目的のために、Groovyでスクリプト viewtab を書きました。あなたはそれを呼び出すように:

viewtab filename.csv

それは基本的にコマンドラインから起動することができ、CSVとタブで区切られたファイルを扱い、ExcelとNumbersが詰め込んだ非常に大きなファイルを読むことができ、そして非常に速い超軽量のスプレッドシートです。テキストのみであるという意味ではコマンドラインではありませんが、プラットフォームに依存せず、コマンドライン環境で作業しながら多数のCSVファイルをすばやく検査するという問題の解決策を探している多くの人にとってはおそらくこれが妥当でしょう。 。

スクリプトとそのインストール方法は次のとおりです。

http://bayesianconspiracy.blogspot.com/2012/06/quick-csvtab-file-viewer.html

0
James Durbin