有人知道Linux / OS X的命令行CSV查看器吗?我在想类似的东西,less
但以更易读的方式将列隔开。(我可以用OpenOffice Calc或Excel打开它,但这样做太强大了,以至于只按需要查看数据即可。)进行水平和垂直滚动会很棒。
有人知道Linux / OS X的命令行CSV查看器吗?我在想类似的东西,less
但以更易读的方式将列隔开。(我可以用OpenOffice Calc或Excel打开它,但这样做太强大了,以至于只按需要查看数据即可。)进行水平和垂直滚动会很棒。
Answers:
您还可以使用以下命令:
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 的替换, ,
完成了两次。如果只执行一次,1,,,4
则1, ,,4
由于第二个逗号已匹配,因此将变为。
column
。我最终将其制作成简短的Shell脚本(其中大部分是样板“如何使用它?”和错误检查代码)。 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世界城市数据库中提取了德国人口最多的十个城市,并以控制台可读的格式显示了结果:
$ 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的:轻量级蟒蛇诅咒命令行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的答案完全相同,除了我已经将其包装在shell函数中并且正在使用该less -S
选项来停止换行(makes的less
行为更像是office / oocalc)。
打开一个新的shell(或键入source ~/.bashrc
当前的shell)并使用以下命令运行命令:
csview <filename>
我使用pisswillis的答案很长时间了。
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
}
它对我来说更好的原因是它可以更好地处理宽列。
这是一个(可能也是)简单的选项:
sed "s/,/\t/g" filename.csv | less
另一个多功能CSV(不仅是)操作工具:Miller。从其自身的描述来看,它就像awk,sed,cut,join和对名称索引数据(例如CSV,TSV和表格JSON)进行排序。(链接到github仓库:https : //github.com/johnkerl/miller)
我写了这个csv_view.sh来从命令行设置CSV格式,这会读取整个文件以找出每列的最佳宽度(需要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
使用TxtSushi,您可以执行以下操作:
csvtopretty filename.csv | less -S
Tabview真的很好。使用200 + MB的文件,这些文件显示良好,这些文件在LibreOffice以及gvim中的csv插件中均存在问题。
Anaconda版本可在此处获取: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
将csv文件转换csv-file-path
为ascii格式,并在stdout上返回结果。如果csv-file-path
='-',则从标准输入中读取。
选项:
-h,--help显示此帮助消息并退出 -w WIDTH,--width = WIDTH ASCII输出宽度 -c栏,--columns =栏 仅显示此列数