Linux/OS X用のコマンドラインCSVビューアを知っている人はいますか?私はless
のようなものを考えていますが、もっと読みやすい方法で列を空けています。 (OpenOffice CalcやExcelで開いても問題ありませんが、必要なデータでは見るだけでは、やり過ぎになります。
これを使うこともできます。
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,,,4
は1, ,,4
になります。
次のようにしてcsvtool
をインストールすることができます(Ubuntuの場合)。
Sudo apt-get install csvtool
そして実行します。
csvtool readable filename | view -
たとえあなたが非常に長い値を持つセルを持っていたとしても、これはそれを読み取り専用のvimインスタンスの中で素晴らしくそしてかなり内側にするでしょう。
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で書かれているため、プラットフォームに依存しません。
Tabview:軽量のpython cursesコマンドラインCSVファイルビューア(そしてリストのリストのような他のPythonの表データ)もここにあります Github
Nodejsパッケージ tecfu/tty-table は、これを正確に行うためにグローバルにインストールすることができます。
apt-get install nodejs
npm i -g tty-table
cat data.csv | tty-table
ストリームも処理できます。
詳しくは、 端末の使用法に関するドキュメントはこちら を参照してください。
私のFOSSプロジェクト CSVfix あなたは "ASCIIアート"テーブルフォーマットでCSVファイルを表示することができます。
Ofriの答えはあなたが要求したすべてをあなたに与えます。しかし、コマンドを覚えたくないのであれば、これを〜/ .bashrc(または同等のもの)に追加することができます。
csview()
{
local file="$1"
sed "s/,/\t/g" "$file" | less -S
}
これはOfriの答えとまったく同じですが、シェル関数で囲み、less -S
オプションを使用して行の折り返しを停止している点が異なります(less
をoffice/oocalcのように動作させる)。
新しいシェルを開き(または現在のシェルでsource ~/.bashrc
を入力して)、次のコマンドを使用してコマンドを実行します。
csview <filename>
xsv は視聴者以上のものです。特に大規模なデータセットを扱う場合は、コマンドラインでのほとんどのCSVタスクにお勧めします。
私はピスウィリスの答えを長い間使いました。
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
}
私にとってそれがよりうまく機能する理由は、幅の広い列をよりよく処理するためです。
Tabulator パッケージのtblless
は、unix column
コマンドをラップし、さらに数値列を揃えます。
これは(おそらくあまりにも)簡単なオプションです:
sed "s/,/\t/g" filename.csv | less
TxtSushi を使えば、次のことができます。
csvtopretty filename.csv | less -S
コマンドラインから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
さらに別の多機能CSV(そしてそれだけではない)操作ツール: Miller 。それ自身の記述からすると、それはawk、sed、cut、join、そしてCSV、TSV、そして表形式のJSONのような名前付きデータのソートのようなものです。 (githubリポジトリへのリンク: https://github.com/johnkerl/miller )
私は 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テーブルをスタイルするのにも使えるということです。
Tabviewは本当にいいです。 LibreOfficeおよびgvimのcsvプラグインにバグがある、きれいに表示される200 MB以上のファイルで動作します。
アナコンダ版はこちらから入手できます。 https://anaconda.org/bioconda/tabview
この短いコマンドラインスクリプトは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 この数の列のみを表示します
この目的のために、Groovyでスクリプト viewtab を書きました。あなたはそれを呼び出すように:
viewtab filename.csv
それは基本的にコマンドラインから起動することができ、CSVとタブで区切られたファイルを扱い、ExcelとNumbersが詰め込んだ非常に大きなファイルを読むことができ、そして非常に速い超軽量のスプレッドシートです。テキストのみであるという意味ではコマンドラインではありませんが、プラットフォームに依存せず、コマンドライン環境で作業しながら多数のCSVファイルをすばやく検査するという問題の解決策を探している多くの人にとってはおそらくこれが妥当でしょう。 。
スクリプトとそのインストール方法は次のとおりです。
http://bayesianconspiracy.blogspot.com/2012/06/quick-csvtab-file-viewer.html