Linux / OS X用のコマンドラインCSVビューアを知っている人はいますか?私は何かのようなものを考えless
ていますが、それはより読みやすい方法で列を空けます。(私はOpenOffice CalcまたはExcelでそれを開くことで大丈夫ですが、私が必要とするようにデータを見るだけではあまりにも強力です。)水平および垂直スクロールがあると素晴らしいでしょう。
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
,,
for の置換は, ,
2回行われることに注意してください。あなたは一度だけそれを行う場合は、1,,,4
なります1, ,,4
第二コンマがすでに一致しているため。
column
。私はこれを短いシェルスクリプトにしてしまいました(ほとんどはボイラープレートの「使用方法」とエラーチェックコードです)。 github.com/benjaminoakes/utilities/blob/master/view-csv
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.
あなたはcsvtool
(Ubuntuに)経由でインストールできます
sudo apt-get install csvtool
次に実行します:
csvtool readable filename | view -
これにより、非常に長い値のセルがいくつかある場合でも、読み取り専用のvimインスタンスの内部をきれいに表示できます。
ocaml-csv
パッケージbase
Centos7で私のために
見てい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で記述されているため、プラットフォームに依存しません。
pip install csvkit
。楽しい!
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>
私は長い間、ピスウィリスの答えを使いました。
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
}
それが私にとってよりうまく機能する理由は、幅の広い列をよりよく処理するためです。
tblless
でタブレータのパッケージのUNIXラップcolumn
コマンドを、また、数値列に整列します。
これは(おそらくあまりにも)単純なオプションです:
sed "s/,/\t/g" filename.csv | less
さらに別の多機能CSV(そしてそれだけではありません)操作ツール:Miller。独自の説明から見ると、CSV、TSV、表形式のJSONなどの名前付きデータのawk、sed、cut、join、sortのようなものです。(githubリポジトリへのリンク:https : //github.com/johnkerl/miller)
コマンドラインから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
タブビューは本当に良いです。LibreOfficeおよびgvimのcsvプラグインでバグが多く、うまく表示された200 MB以上のファイルを操作しました。
アナコンダ版はこちらから入手できます:https : //anaconda.org/bioconda/tabview
これらの(およびその他の)目的で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
tablign
。説明で修正されました。
この目的のために、Groovyでスクリプトviewtabを作成しました。あなたはそれを次のように呼び出します:
viewtab filename.csv
これは基本的に、コマンドラインから呼び出すことができ、CSVとタブで区切られたファイルを処理し、ExcelとNumbersが処理する非常に大きなファイルを読み取ることができ、非常に高速な超軽量スプレッドシートです。テキストのみという意味ではコマンドラインではありませんが、プラットフォームに依存せず、コマンドライン環境で作業しているときに多数または大きなCSVファイルをすばやく検査する問題の解決策を探している多くの人々の要求におそらく応えます。 。
スクリプトとそのインストール方法は次のとおりです。
http://bayesianconspiracy.blogspot.com/2012/06/quick-csvtab-file-viewer.html
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 この列数のみを表示