有人知道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 的替换, ,
是两次.如果你只做了一次,那么自从第二个逗号已经匹配后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上
Python 2.7 +,3.x
Unicode支持
类似电子表格的视图,可轻松查看表格数据
类似Vim的导航(h,j,k,l,g(顶部),G(底部),12G转到第12行,m - 标记,' - 转到标记等)
切换持久标题行
动态调整列宽和间隙的大小
按任何列升序或降序排序.'自然'顺序排序数值.
全文搜索,n和p在搜索结果之间循环
'Enter'查看完整的单元格内容
将单元格内容放入剪贴板
F1还是?用于键绑定
也可以使用python命令行来显示任何表格数据(例如列表列表)
如果你是一个vimmer,请使用CSV插件,这是美丽的.
可以全局安装nodejs包tecfu/tty-table来做到这一点:
apt-get install nodejs npm i -g tty-table cat data.csv | tty-table
它也可以处理流.
有关详细信息,请参阅此处的终端使用文档.
我的FOSS项目CSVfix允许您以"ASCII艺术"表格格式显示CSV文件.
xsv不仅仅是一个观众.我推荐它用于命令行上的大多数CSV任务,尤其是在处理大型数据集时.
Ofri的答案为您提供了所需的一切.但是..如果你不想记住命令,你可以将它添加到你的〜/ .bashrc(或等效的):
csview() { local file="$1" sed "s/,/\t/g" "$file" | less -S }
这与Ofri的答案完全相同,除了我将它包装在一个shell函数中并使用less -S
选项来停止换行(使得less
行为更像办公室/ oocalc).
打开一个新shell(或source ~/.bashrc
在当前shell中键入)并使用以下命令运行命令:
csview
我很长一段时间都使用了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 }
它对我来说效果更好的原因是它可以更好地处理宽列.