有人知道Linux / OS X的命令行CSV查看器吗?我正在考虑像 less 这样的东西,但是以更易读的方式将列空出来 . (我的方式太过于过于强大,只能像我需要的那样查看数据 . )水平和垂直滚动会很棒 .
less
xsv不仅仅是一个 Spectator . 我推荐它用于命令行上的大多数CSV任务,尤其是在处理大型数据集时 .
你也可以用这个:
column -s, -t < somefile.csv | less -#2 -N -S
column 是一个非常方便的标准unix程序 - 它找到每列的适当宽度,并将文本显示为格式良好的表 .
column
注意:只要有空字段,就需要在其中放置某种占位符,否则该列将与以下列合并 . 以下示例演示如何使用 sed 插入占位符:
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
请注意, ,, 替换 , , 已完成两次 . 如果您只执行一次, 1,,,4 将变为 1, ,,4 ,因为已经匹配了第二个逗号 .
,,
, ,
1,,,4
1, ,,4
您可以通过安装 csvtool (在Ubuntu上)
csvtool
sudo apt-get install csvtool
然后运行:
csvtool readable filename | view -
即使你有一些具有很长值的单元格,这也会使它在一个只读的vim实例中很漂亮 .
看看csvkit . 它提供了一组遵循UNIX哲学的工具(意味着它们小巧,简单,单一用途并且可以组合使用) .
这是一个从免费的Maxmind World Cities database中提取德国人口最多的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
Python 2.7,3.x
Unicode支持
类似电子表格的视图,可以轻松查看表格数据
类似Vim的导航(h,j,k,l,g(顶部),G(底部),12G转到第12行,m - 标记,' - 转到标记等)
切换持久 Headers 行
动态调整列宽和间隙的大小
按任何列升序或降序排序 . 'Natural'对数值进行排序 .
全文搜索,n和p在搜索结果之间循环
'Enter'查看完整的单元格内容
将单元格内容放入剪贴板
F1或?用于键绑定
也可以使用python命令行来显示任何表格数据(例如列表列表)
如果你是一个游客,请使用CSV plugin,这是beautiful .
可以全局安装nodejs包tecfu/tty-table来执行以下操作:
apt-get install nodejs npm i -g tty-table cat data.csv | tty-table
它也可以处理流 .
有关详细信息,请参阅docs for terminal usage here .
我的FOSS项目CSVfix允许您以"ASCII art"表格格式显示CSV文件 .
Ofri的答案为您提供了所需的一切 . 但是..如果你不想记住命令,你可以将它添加到你的〜/ .bashrc(或等效的):
csview() { local file="$1" sed "s/,/\t/g" "$file" | less -S }
这与Ofri的答案完全相同,除了我将它包装在shell函数中并使用 less -S 选项来停止换行(使得 less 的行为更像办公室/ oocalc) .
less -S
打开一个新shell(或在当前shell中键入 source ~/.bashrc )并使用以下命令运行命令:
source ~/.bashrc
csview <filename>
我很长一段时间都使用了pisswillis的答案 .
但结合我在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 命令,并且还对齐数字列 .
tblless
这是一个(可能太)简单的选项:
sed "s/,/\t/g" filename.csv | less
我写了这个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
又一个多功能CSV(而不仅仅是)操纵工具:Miller . 从它自己的描述来看,它就像awk,sed,cut,join和sort等名称索引数据,如CSV,TSV和表格JSON . (链接到github存储库:https://github.com/johnkerl/miller)
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 ,
如果数据由逗号之外的其他内容分隔,也可以工作 . 最重要的是,它保留了分隔符,因此您也可以使用它来设置ASCII表的样式,而不会牺牲[Markdown,CSV,LaTeX]语法 .
为了这个目的,我在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-file-path 处的csv文件转换为ascii表单,将结果返回到stdout . 如果 csv-file-path = '-'则从标准输入读取 .
csv-file-path
选项:
-h, --help show this help message and exit -w WIDTH, --width=WIDTH Width of ascii output -c COLUMNS, --columns=COLUMNS Only display this number of columns
19 回答
xsv不仅仅是一个 Spectator . 我推荐它用于命令行上的大多数CSV任务,尤其是在处理大型数据集时 .
你也可以用这个:
column
是一个非常方便的标准unix程序 - 它找到每列的适当宽度,并将文本显示为格式良好的表 .注意:只要有空字段,就需要在其中放置某种占位符,否则该列将与以下列合并 . 以下示例演示如何使用
sed
插入占位符:请注意,
,,
替换, ,
已完成两次 . 如果您只执行一次,1,,,4
将变为1, ,,4
,因为已经匹配了第二个逗号 .您可以通过安装
csvtool
(在Ubuntu上)然后运行:
即使你有一些具有很长值的单元格,这也会使它在一个只读的vim实例中很漂亮 .
看看csvkit . 它提供了一组遵循UNIX哲学的工具(意味着它们小巧,简单,单一用途并且可以组合使用) .
这是一个从免费的Maxmind World Cities database中提取德国人口最多的10个城市的例子,并以控制台可读的格式显示结果:
Csvkit是独立于平台的,因为它是用Python编写的 .
Tabview:轻量级python curses命令行CSV文件查看器(以及其他表格Python数据,如列表列表)在这里Github
特点:
Python 2.7,3.x
Unicode支持
类似电子表格的视图,可以轻松查看表格数据
类似Vim的导航(h,j,k,l,g(顶部),G(底部),12G转到第12行,m - 标记,' - 转到标记等)
切换持久 Headers 行
动态调整列宽和间隙的大小
按任何列升序或降序排序 . 'Natural'对数值进行排序 .
全文搜索,n和p在搜索结果之间循环
'Enter'查看完整的单元格内容
将单元格内容放入剪贴板
F1或?用于键绑定
也可以使用python命令行来显示任何表格数据(例如列表列表)
如果你是一个游客,请使用CSV plugin,这是beautiful .
可以全局安装nodejs包tecfu/tty-table来执行以下操作:
它也可以处理流 .
有关详细信息,请参阅docs for terminal usage here .
我的FOSS项目CSVfix允许您以"ASCII art"表格格式显示CSV文件 .
Ofri的答案为您提供了所需的一切 . 但是..如果你不想记住命令,你可以将它添加到你的〜/ .bashrc(或等效的):
这与Ofri的答案完全相同,除了我将它包装在shell函数中并使用
less -S
选项来停止换行(使得less
的行为更像办公室/ oocalc) .打开一个新shell(或在当前shell中键入
source ~/.bashrc
)并使用以下命令运行命令:csview <filename>
我很长一段时间都使用了pisswillis的答案 .
但结合我在http://chrisjean.com/2011/06/17/view-csv-data-from-the-command-line找到的一些代码对我来说效果更好:
它对我来说效果更好的原因是它可以更好地处理宽列 .
Tabulator包中的
tblless
包装了unixcolumn
命令,并且还对齐数字列 .这是一个(可能太)简单的选项:
我写了这个csv_view.sh来从命令行格式化CSV,这会读取整个文件以找出每列的最佳宽度(需要perl,假设字段中没有逗号,也使用较少):
使用TxtSushi你可以这样做:
又一个多功能CSV(而不仅仅是)操纵工具:Miller . 从它自己的描述来看,它就像awk,sed,cut,join和sort等名称索引数据,如CSV,TSV和表格JSON . (链接到github存储库:https://github.com/johnkerl/miller)
Tabview真的很棒 . 使用200 MB的文件显示很好的错误LibreOffice以及gvim中的csv插件 .
Anaconda版本可在此处获取:https://anaconda.org/bioconda/tabview
我为这些(和其他)目的创建了tablign . 安装时
和
如果数据由逗号之外的其他内容分隔,也可以工作 . 最重要的是,它保留了分隔符,因此您也可以使用它来设置ASCII表的样式,而不会牺牲[Markdown,CSV,LaTeX]语法 .
为了这个目的,我在Groovy中编写了一个脚本viewtab . 你调用它像:
它基本上是一个超轻量级的电子表格,可以从命令行调用,处理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
只需下载并放入您的路径即可 . 用法就像
将
csv-file-path
处的csv文件转换为ascii表单,将结果返回到stdout . 如果csv-file-path
= '-'则从标准输入读取 .选项: