コマンドラインCSVビューア?[閉まっている]


308

Linux / OS X用のコマンドラインCSVビューアを知っている人はいますか?私は何かのようなものを考えlessていますが、それはより読みやすい方法で列を空けます。(私はOpenOffice CalcまたはExcelでそれを開くことで大丈夫ですが、私が必要とするようにデータを見るだけではあまりにも強力です。)水平および垂直スクロールがあると素晴らしいでしょう。


答えがわからないので、SC-IMは、CSVを開くこともできるテーブル用のCLIビューアおよびエディタです。github.com/andmarti1424/sc-im
12431234123412341234123

回答:


441

これを使用することもできます:

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

,,for の置換は, ,2回行われることに注意してください。あなたは一度だけそれを行う場合は、1,,,4なります1, ,,4第二コンマがすでに一致しているため。


2
私はこのオプションが本当に好きです-について知っておくのは良いことですcolumn。私はこれを短いシェルスクリプトにしてしまいました(ほとんどはボイラープレートの「使用方法」とエラーチェックコードです)。 github.com/benjaminoakes/utilities/blob/master/view-csv
Benjamin Oakes

24
'Debian GNU / Linux'バージョンのカラムには '-n'オプションがあります。「デフォルトでは、-tオプションを使用すると、カラムコマンドは隣接する複数の区切り文字を単一の区切り文字にマージします。このオプションはその動作を無効にします。このオプションはDebian GNU / Linux拡張機能。」
klokop 2013年

5
列値(引用符で囲まれている)にカンマが含まれていると、壊れるようです。これを修正する方法はありますか?
TM。

3
からman column-n By default, the column command will merge multiple adjacent delimiters into a single delimiter when using the -t option; this option disables that behavior. This option is a Debian GNU/Linux extension.
ezdazuzena

8
残念ながら、値にコンマが含まれている場合は、引用符で囲まれていても分割されます。
ffarquet 2017

107

あなたはcsvtool(Ubuntuに)経由でインストールできます

sudo apt-get install csvtool

次に実行します:

csvtool readable filename | view -

これにより、非常に長い値のセルがいくつかある場合でも、読み取り専用のvimインスタンスの内部をきれいに表示できます。


2
ないのDebianベースのディストリビューション上のものについては、このツールはここに由来するようだ:docs.camlcity.org/docs/godisrc/ocaml-csv-1.1.6.tar.gzは、 残念ながら「ホームページ」のリンクは死んでいる、と私ドン外出先でアーカイブ全体をダウンロードする簡単な方法はわかりません。
cincodenada 2014年

9
このツールは100Mb +のファイルを処理できません
PedroSena 2014

6
このツールはから入手可能ですocaml-csvパッケージbaseCentos7で私のために
ブライスGuinta

72

見てい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で記述されているため、プラットフォームに依存しません。


1
私のMACでうまく動作します。大きなファイルの読み取りに非常に役立ちます。
James Lim

4
私はCsvkitが好きです。csvlook <filename.csv> | 少ない-S
Sandeep 14

5
csvkitを入手するには、pipでインストールしますpip install csvkit。楽しい!
gloriphobia 2017年

46

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

特徴:

  • Python 2.7以降、3.x
  • Unicodeサポート
  • 表形式データを簡単に視覚化するためのスプレッドシートのようなビュー
  • Vimのようなナビゲーション(h、j、k、l、g(上)、G(下)、12G goto行12、m-マーク、 '-gotoマークなど)
  • 永続的なヘッダー行を切り替え
  • 列の幅とギャップを動的にサイズ変更
  • 任意の列で昇順または降順で並べ替えます。数値の「自然」な順序の並べ替え。
  • 全文検索、検索結果間を循環するnおよびp
  • セルの内容全体を表示するには「Enter」キーを押してください
  • セルの内容をクリップボードにヤンク
  • F1または?キーバインド用
  • pythonコマンドラインから使用して、表形式データ(リストのリストなど)を視覚化することもできます。

1
素晴らしいツール。csvtoolとopenofficeをクラッシュさせる巨大なファイルを開きました。とても速い。
Leonardo

Windowsで「pip install tabview」が正常に実行された後、プログラムを起動するにはどうすればよいですか?Linuxで「tabview file.csv」を正常に使用できますが、Windowsが機能していないようです。ありがとう!
Chris

cursesモジュールがWindowsで使用できるとは思いません。ごめんなさい!サードパーティのモジュールが利用できる可能性がありますが、Windowsの開発は行っていません。
スコットハンセン

ご説明ありがとうございます!結局、それは素晴らしいツールです。
Chris

1
@CiroSantilli烏竜事件2016六四事件法轮功、残念ながらまだです。しばらく時間をタブビューに入れたいと思っています...ここしばらくの間、かなり休止状態になっています。:(
スコットハンセン


22

nodejsパッケージtecfu / tty-tableをグローバルにインストールして、これを正確に実行できます。

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

tecfu / tty-table

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

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


1
反対票を投じる場合は理由を残してください。このパッケージは機能し、適切に機能します。
user3751385

9
nodejsはウェブサーバープラットフォームです。あなたは誰かにチェーンソーでパンを切るように勧めるべきではありません。
最大

23
nodeはCLIバインディングを備えた汎用スクリプトシステムですが、perlワンライナーやCPANの何かを使用するのとどう違うのですか?
ラチェット

私はこのオプションを本当に気に入っていますが、それをlessにパイプすると、正しく表示されません。それをより少なくするために何か特別なものが必要かどうか知っていますか?
プラフラット

このパッケージは、ファイルに多くの列が含まれている場合(特に、端末画面の横幅が処理できる幅を超える場合)に破損し、その後それらを適切に配置しません。
断続的


9

私のFOSSプロジェクトCSVfixでは、「ASCIIアート」テーブル形式でCSVファイルを表示できます。


まさに私が探していたもの。OS X向けにコンパイルしてみる必要があります。(あなたが知っているいくつかのパッチがあなたの方法でやって来るかもしれません...)
Benjamin Oakes

彼らを大歓迎します。FOSSプロジェクトのやや憂鬱な側面の1つは、実際にコードを提供している人が少ないことです。もちろん、私は次の人と同じくらい有罪です。

CSVfixプロジェクトがリポジトリ参照を許可しないのはなぜですか?他の人がコードを見るのを難しくしても、貢献を得る可能性は高くなりますね。
Dirk Eddelbuettel、2009

1
私の部分での純粋な怠惰、私は恐れています。また、コードのzipを提供することは、誰でもそれを入手できることを意味します-私がレポへのアクセスのみを提供する場合、人々はSVMまたはHgをインストールする必要があります。パッチを受け始めたら、再考するでしょう。

2015
ボリス

8

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

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

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

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

csview <filename>


5
これは引用符内のコンマを処理しません。
Cheng

7

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

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
}

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



3

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

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

2
それも私の最初の傾向でした。ただし、列の最長値に一致するのに十分なタブを挿入する必要があります...少し複雑になり始め、「他の誰かがすでにこれを行っているに違いない」と思いました。
ベンジャミンオークス

2
また、コンマが引用符で囲まれているために区切り文字ではない可能性があるという事実を無視しています。(特に)
アリエルアロン


2

コマンドラインから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

TxtSushiを使用すると、次のことができます。

csvtopretty filename.csv | less -S

1行のインストール手順ではないことへの反対票。これをコンパイルする時間がありません:(。素晴らしいパッケージを提供できたら
masterxilo

@masterxiloそれは反対投票する正当な理由ではありません。現在、多くのパッケージをインストールするには、いくつかの手順が必要です。さらに、コメントを書くよりインストールの方がおそらく速いでしょう。
Yuval Meshorer

2

タブビューは本当に良いです。LibreOfficeおよびgvimのcsvプラグインでバグが多く、うまく表示された200 MB以上のファイルを操作しました。

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


2

これらの(およびその他の)目的で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 ,

また、データがコンマ以外で区切られている場合にも機能します。最も重要なのは、デリミタが保持されるため、[Markdown、CSV、LaTeX]構文を犠牲にすることなく、ASCIIテーブルのスタイル設定に使用できることです。


Collecting tablify Could not find a version that satisfies the requirement tablify (from versions: ) No matching distribution found for tablify
masterxilo 2018年

@masterxilo名前をに変更しましたtablign。説明で修正されました。
NicoSchlömer2018

1
完璧です。
masterxilo 2018

0

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

viewtab filename.csv

これは基本的に、コマンドラインから呼び出すことができ、CSVとタブで区切られたファイルを処理し、ExcelとNumbersが処理する非常に大きなファイルを読み取ることができ、非常に高速な超軽量スプレッドシートです。テキストのみという意味ではコマンドラインではありませんが、プラットフォームに依存せず、コマンドライン環境で作業しているときに多数または大きなCSVファイルをすばやく検査する問題の解決策を探している多くの人々の要求におそらく応えます。 。

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

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


0

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

ダウンロードしてパスに配置するだけです。使い方は

csv2ascii.py [options] csv-file-path

atのcsvファイルcsv-file-pathをASCII形式に変換し、結果をstdoutに返します。csv-file-path= '-'の場合、標準入力から読み取ります。

オプション:

  -h、--helpこのヘルプメッセージを表示して終了します
  -w WIDTH、-width = WIDTH
                        ASCII出力の幅
  -c COLUMNS、-columns = COLUMNS
                        この列数のみを表示
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.