有人知道Linux/OS X的命令行CSV查看器吗?我在考虑一些更少的东西,但以一种更可读的方式分隔列。(我可以用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

注意,对,,,的替换做了两次。如果只做一次,1…4将变成1,,,4,因为第二个逗号已经匹配了。

其他回答

使用TxtSushi您可以做到:

csvtopretty filename.csv | less -S

这里有一个(可能太)简单的选择:

sed "s/,/\t/g" filename.csv | less

你也可以用这个:

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

注意,对,,,的替换做了两次。如果只做一次,1…4将变成1,,,4,因为第二个逗号已经匹配了。

为此,我在Groovy中编写了一个脚本viewtab。你可以这样调用它:

viewtab filename.csv

它基本上是一个超轻量级的电子表格,可以从命令行调用,处理CSV和制表符分离的文件,可以读取Excel和Numbers阻塞的非常大的文件,并且非常快。从纯文本的意义上讲,它不是命令行,但它是独立于平台的,可能适合许多人在命令行环境中寻找快速检查许多或大型CSV文件的解决方案。

脚本和如何安装它描述在这里:

http://bayesianconspiracy.blogspot.com/2012/06/quick-csvtab-file-viewer.html

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