有人知道Linux/OS X的命令行CSV查看器吗?我在考虑一些更少的东西,但以一种更可读的方式分隔列。(我可以用OpenOffice Calc或Excel打开它,但这对于我需要查看的数据来说太强大了。)有水平和垂直滚动会很棒。


当前回答

奥弗里的回答会告诉你你想要的一切。 但. .如果你不想记住这个命令,你可以把它添加到你的~/。Bashrc(或同等):

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

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

打开一个新的shell(或者输入source ~/。Bashrc在你当前的shell),并运行命令使用:

csview < filename >

其他回答

在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 = '-'则从stdin读取。

选项:

  -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

你也可以用这个:

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,因为第二个逗号已经匹配了。

还有另一个多功能的CSV(不仅仅是)操作工具:Miller。从它自己的描述来看,它类似于名称索引数据(如CSV、TSV和表格JSON)的awk、sed、cut、join和sort。(链接到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

Tabview:轻量级的python curses命令行CSV文件查看器(以及其他表格式python数据,如列表中的列表)在Github上

特点:

Python 2.7+, 3.x Unicode support Spreadsheet-like view for easily visualizing tabular data Vim-like navigation (h,j,k,l, g(top), G(bottom), 12G goto line 12, m - mark, ' - goto mark, etc.) Toggle persistent header row Dynamically resize column widths and gap Sort ascending or descending by any column. 'Natural' order sort for numeric values. Full-text search, n and p to cycle between search results 'Enter' to view the full cell contents Yank cell contents to clipboard F1 or ? for keybindings Can also use from python command line to visualize any tabular data (e.g. list-of-lists)