当前位置:  开发笔记 > 编程语言 > 正文

命令行CSV查看器?

如何解决《命令行CSV查看器?》经验,为你挑选了10个好方法。

有人知道Linux/OS X的命令行CSV查看器吗?我正在考虑类似less但是以更易读的方式将列空间化.(我可以用OpenOffice Calc或Excel打开它,但是这样做太过于无法仅仅按照我的需要查看数据.)水平和垂直滚动会很棒.



1> 小智..:

你也可以用这个:

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.


"Debian GNU/Linux"版本的列具有'-n'选项:"默认情况下,column命令会在使用-t选项时将多个相邻分隔符合并为单个分隔符;此选项会禁用该行为.此选项为Debian GNU/Linux扩展."
不幸的是,如果某个值包含逗号,即使它被引用,它也会被拆分.
如果您的列值(引用)中包含逗号,则似乎会中断.知道如何解决这个问题吗?
来自`man column`:` - n默认情况下,当使用-t选项时,column命令会将多个相邻的分隔符合并为一个分隔符; 此选项禁用该行为.这个选项是Debian GNU/Linux扩展
我真的很喜欢这个选项 - 了解`column`真是太好了.我最终把它变成了一个简短的shell脚本(大部分是样板文件"我该如何使用它?"和错误检查代码).https://github.com/benjaminoakes/utilities/blob/master/view-csv

2> 小智..:

您可以通过安装csvtool(在Ubuntu上)

sudo apt-get install csvtool

然后运行:

csvtool readable filename | view -

即使你有一些具有很长值的单元格,这也会使它在一个只读的vim实例中很漂亮.


该工具无法处理100Mb +的文件
这个工具可以在Centos7中的`base`中的`ocaml-csv`包中找到

3> Kai Sternad..:

看看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编写的.


要获得csvkit,你可以直接pip安装它:`pip install csvkit`.请享用!
我喜欢Csvkit.csvlook | 少-S

4> Scott Hansen..:

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命令行来显示任何表格数据(例如列表列表)



5> P. Myer Nore..:

如果你是一个vimmer,请使用CSV插件,这是美丽的.



6> user3751385..:

可以全局安装nodejs包tecfu/tty-table来做到这一点:

apt-get install nodejs
npm i -g tty-table
cat data.csv | tty-table

tecfu/TTY表

它也可以处理流.

有关详细信息,请参阅此处的终端使用文档.


node是一个带有CLI绑定的通用脚本系统,与使用perl单行或CPAN的东西有什么不同?
nodejs是一个Web服务器平台.你不应该建议有人用电锯切面包.

7> 小智..:

我的FOSS项目CSVfix允许您以"ASCII艺术"表格格式显示CSV文件.



8> 小智..:

xsv不仅仅是一个观众.我推荐它用于命令行上的大多数CSV任务,尤其是在处理大型数据集时.



9> pisswillis..:

Ofri的答案为您提供了所需的一切.但是..如果你不想记住命令,你可以将它添加到你的〜/ .bashrc(或等效的):

csview()
{
local file="$1"
sed "s/,/\t/g" "$file" | less -S
}

这与Ofri的答案完全相同,除了我将它包装在一个shell函数中并使用less -S选项来停止换行(使得less行为更像办公室/ oocalc).

打开一个新shell(或source ~/.bashrc在当前shell中键入)并使用以下命令运行命令:

csview


这不会处理引号中的逗号.

10> Tom Weiss..:

我很长一段时间都使用了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
}

它对我来说效果更好的原因是它可以更好地处理宽列.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有