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


当前回答

Tabview真的很好。工作200+MB的文件,显示很好,这是与LibreOffice的bug,以及在gvim的csv插件。

Anaconda版本可以在这里找到:https://anaconda.org/bioconda/tabview

其他回答

如果你是一个vimmer,使用CSV插件,它非常漂亮:

.

在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

Tabview真的很好。工作200+MB的文件,显示很好,这是与LibreOffice的bug,以及在gvim的csv插件。

Anaconda版本可以在这里找到:https://anaconda.org/bioconda/tabview

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

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