407 Stimmen

Anzeigen von Tabellendateien wie CSV über die Befehlszeile

Kennt jemand einen Befehlszeilen-CSV-Viewer für Linux/OS X? Ich denke da an etwas wie less aber dadurch werden die Spalten besser lesbar verteilt. (Ich hätte kein Problem damit, die Datei mit OpenOffice Calc oder Excel zu öffnen, aber das ist viel zu aufwendig für nur siehe Ich muss mir die Daten ansehen, wie ich sie brauche.) Ein horizontaler und vertikaler Bildlauf wäre toll.

6voto

Nikos Alexandris Punkte 668

Ein weiteres multifunktionales Werkzeug zur CSV-Bearbeitung (und nicht nur das): Müller . Nach seiner eigenen Beschreibung ist es wie awk, sed, cut, join und sort für namensindizierte Daten wie CSV, TSV und tabellarisches JSON. (Link zum Github-Repository: https://github.com/johnkerl/miller )

5voto

stefan.schroedl Punkte 786

tblless dans le Tabulator Paket umhüllt das Unix column Befehl und richtet auch numerische Spalten aus.

3voto

Nico Schlömer Punkte 45358

Ich habe erstellt tablign für diese (und andere) Zwecke. Installieren mit

pip install tablign

$ cat test.csv
Header1,Header2,Header3
Pizza,Artichoke dip,Bob's Special of the Day
BLT,Ham on rye with the works,

$ tablign test.csv
Header1 , Header2                   , Header3
Pizza   , Artichoke dip             , Bob's Special of the Day
BLT     , Ham on rye with the works ,

Funktioniert auch, wenn die Daten durch etwas anderes als Kommas getrennt sind. Am wichtigsten ist, dass es konserviert die Begrenzungszeichen, so dass Sie damit auch Ihre ASCII-Tabellen gestalten können, ohne Ihre [Markdown,CSV,LaTeX]-Syntax zu opfern.

2voto

Jean Vincent Punkte 11155

Ich habe dieses csv_view.sh geschrieben, um CSV-Dateien von der Kommandozeile aus zu formatieren. Es liest die gesamte Datei, um die optimale Breite jeder Spalte herauszufinden (erfordert Perl, setzt voraus, dass es keine Kommas in den Feldern gibt, verwendet auch less):

#!/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

2voto

Keith Punkte 2720

Verwendung von TxtSushi können Sie tun:

csvtopretty filename.csv | less -S

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X