it-swarm.com.de

Befehlszeilen-CSV-Viewer?

Kennt jemand einen Befehlszeilen-CSV-Viewer für Linux/OS X? Ich denke an etwas wie less, aber das räumt die Spalten besser lesbar aus. (Ich würde es gut mit OpenOffice Calc oder Excel öffnen können, aber das ist viel zu überfordert, um nur auf die Daten zu schauen , wie ich es tun muss.) Horizontales und vertikales Scrollen wäre großartig.

280
Benjamin Oakes

Sie können dies auch verwenden:

column -s, -t < somefile.csv | less -#2 -N -S

column ist ein Standard-Unix-Programm, das sehr praktisch ist - es findet die entsprechende Breite jeder Spalte und zeigt den Text als schön formatierte Tabelle an.

Hinweis: Wenn Sie leere Felder haben, müssen Sie einen Platzhalter einfügen. Andernfalls wird die Spalte mit den folgenden Spalten zusammengeführt. Das folgende Beispiel zeigt, wie Sie mit sed einen Platzhalter einfügen:

$ 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

Beachten Sie, dass die Ersetzung von ,, zum , , wird zweimal ausgeführt. Wenn Sie es nur einmal tun, 1,,,4 wird werden 1, ,,4 da das zweite Komma bereits übereinstimmt.

388
user437522

Sie können csvtool (unter Ubuntu) über installieren

Sudo apt-get install csvtool

und dann laufen:

csvtool readable filename | view -

Dadurch wird es in einer schreibgeschützten VIM-Instanz schön und hübsch, selbst wenn Sie einige Zellen mit sehr langen Werten haben.

93
d_chall

Schauen Sie sich csvkit an. Es bietet eine Reihe von Tools, die der UNIX-Philosophie entsprechen (dh sie sind klein, einfach, zweckgebunden und können kombiniert werden).

Hier ist ein Beispiel, das die zehn bevölkerungsreichsten Städte in Deutschland aus der kostenlosen Maxmind World Cities-Datenbank extrahiert und das Ergebnis in einem konsolenlesbaren Format anzeigt:

$ 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 ist plattformunabhängig, da es in Python geschrieben ist.

61
Kai Sternad

Tabview: Lightweight python verflucht CSV-Datei-Viewer (und auch andere tabellarische Python Daten, wie eine Liste von Listen) ist hier auf Github

Eigenschaften:

  • Python 2.7+, 3.x
  • Unicode-Unterstützung
  • Tabellenkalkulationsansicht zur einfachen Visualisierung von Tabellendaten
  • Vim-ähnliche Navigation (h, j, k, l, g (oben), G (unten), 12G Gehe zu Zeile 12, m - Markierung, '- Gehe zu Markierung usw.)
  • Dauerhafte Kopfzeile umschalten
  • Spaltenbreiten und Lücken dynamisch anpassen
  • Aufsteigend oder absteigend nach einer beliebigen Spalte sortieren. 'Natural' Sortierreihenfolge für numerische Werte.
  • Volltextsuche, n und p, um zwischen den Suchergebnissen zu wechseln
  • 'Enter', um den gesamten Zelleninhalt anzuzeigen
  • Inhalt der Zelle in die Zwischenablage ziehen
  • F1 oder? für Tastenkombinationen
  • Kann auch von der python Befehlszeile aus verwendet werden, um tabellarische Daten (z. B. Listenlisten) anzuzeigen.
41
Scott Hansen

Wenn Sie ein Vimmer sind, verwenden Sie das CSV-Plugin , das nur schön ist.

29
P. Myer Nore

Das nodejs-Paket tecfu/tty-table kann global installiert werden, um genau dies zu tun:

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

tecfu/tty-table

Es kann auch Streams verarbeiten.

Weitere Informationen finden Sie in der Dokumentation zur Verwendung des Terminals hier .

18
user3751385

In meinem FOSS-Projekt CSVfix können Sie CSV-Dateien im Tabellenformat "ASCII art" anzeigen.

10
anon

Ofris Antwort gibt dir alles, wonach du gefragt hast. Aber ... wenn Sie sich nicht an den Befehl erinnern möchten, können Sie dies zu Ihrer ~/.bashrc (oder einer Entsprechung) hinzufügen:

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

Dies ist genau das Gleiche wie die Antwort von Ofri, außer dass ich sie in eine Shell-Funktion eingebunden habe und die Option less -S Verwende, um den Zeilenumbruch zu stoppen (macht less verhält sich eher wie ein Büro/oocalc) .

Öffnen Sie eine neue Shell (oder geben Sie source ~/.bashrc In Ihre aktuelle Shell ein) und führen Sie den Befehl aus:

csview <filename>

8
pisswillis

xsv ist mehr als ein Betrachter. Ich empfehle es für die meisten CSV-Aufgaben in der Befehlszeile, insbesondere bei großen Datenmengen.

8
smartmic

Ich habe lange die Antwort von Pisswillis benutzt.

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

Kombiniere dann aber einen Code, den ich unter http://chrisjean.com/2011/06/17/view-csv-data-from-the-command-line gefunden habe und der besser funktioniert für mich:

csview()
{
    local file="$1"
    cat "$file" | sed -e 's/,,/, ,/g' | column -s, -t | less -#5 -N -S
}

Der Grund, warum es für mich besser funktioniert, ist, dass es mit breiten Spalten besser umgehen kann.

6
Tom Weiss

tblless im Paket Tabulator umschließt den Unix-Befehl column und richtet auch numerische Spalten aus.

4
stefan.schroedl

Hier ist eine (wahrscheinlich zu) einfache Option:

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

Mit TxtSushi können Sie Folgendes tun:

csvtopretty filename.csv | less -S
2
Keith

Ich habe diese Datei csv_view.sh geschrieben, um CSVs von der Befehlszeile aus zu formatieren. Dabei wird die gesamte Datei gelesen, um die optimale Breite jeder Spalte zu ermitteln.


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

2
Jean Vincent

Ein weiteres multifunktionales CSV (und nicht nur) Manipulationswerkzeug: Miller . Nach eigener 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 )

1

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

[Sudo -H] pip3 install tablign

und

$ 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 die Begrenzer beibehalten werden , sodass Sie sie auch zum Gestalten Ihrer ASCII) - Tabellen verwenden können, ohne Ihren [Markdown] zu opfern , CSV, LaTeX] -Syntax.

1
Nico Schlömer

Tabview ist wirklich gut. Arbeitete mit 200 + MB-Dateien, die gut angezeigt wurden und mit LibreOffice sowie dem CSV-Plugin in gvim fehlerhaft waren.

Die Anaconda-Version ist hier verfügbar: https://anaconda.org/bioconda/tabview

1
shankerj

Es gibt dieses kurze Befehlszeilenskript in Python: https://github.com/rgrp/csv2ascii/blob/master/csv2ascii.py

Einfach herunterladen und in den Pfad einfügen. Die Verwendung ist wie

csv2ascii.py [options] csv-file-path

Csv-Datei umwandeln bei csv-file-path, um die Rückgabe des Ergebnisses auf stdout zu veranlassen. Wenn csv-file-path = '-' dann aus stdin lesen.

Optionen:

 -h, --help zeige diese Hilfemeldung und beende 
 -w WIDTH, --width = WIDTH 
 Breite der ASCII-Ausgabe 
 -c COLUMNS, - -columns = COLUMNS 
 Nur diese Anzahl von Spalten anzeigen 
0
Rufus Pollock

Zu diesem Zweck habe ich in Groovy ein Skript geschrieben, viewtab . Sie rufen es wie folgt auf:

viewtab filename.csv

Es ist im Grunde eine superleichte Tabelle, die über die Befehlszeile aufgerufen werden kann, CSV- und tabulatorgetrennte Dateien verarbeitet, SEHR große Dateien lesen kann, an denen Excel und Numbers ersticken, und die sehr schnell ist. Es ist keine Kommandozeile im Sinne von Nur-Text, aber es ist plattformunabhängig und wird wahrscheinlich vielen Leuten gefallen, die nach einer Lösung für das Problem suchen, viele oder große CSV-Dateien in einer Kommandozeilenumgebung schnell zu überprüfen .

Das Skript und seine Installation werden hier beschrieben:

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

0
James Durbin