Przeglądarka CSV z linii poleceń? [zamknięte]

Ktoś zna przeglądarkę CSV z linii poleceń dla Linuksa/OS X? Myślę o czymś w rodzaju less, ale to rozdziela kolumny w bardziej czytelny sposób. (Byłbym w porządku z otwarciem go z OpenOffice Calc lub Excel, ale to jest zbyt przytłaczające dla po prostu patrząc na dane, jak trzeba.) Przewijanie poziome i pionowe byłoby świetne.

Author: Benjamin Oakes, 2009-12-09

19 answers

Możesz również użyć tego:

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

column jest standardowym programem uniksowym, który jest bardzo wygodny-znajduje odpowiednią szerokość każdej kolumny i wyświetla tekst jako ładnie sformatowaną tabelę.

Uwaga: Gdy masz puste pola, musisz umieścić w nich jakiś symbol zastępczy, w przeciwnym razie kolumna zostanie scalona z następującymi kolumnami. Poniższy przykład pokazuje, jak użyć sed, aby wstawić symbol zastępczy:

$ 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

Zauważ, że zastąpienie ,, dla , , jest zrobione dwa razy. Jeśli zrobisz to tylko raz, 1,,,4 stanie się 1, ,,4, ponieważ drugi przecinek jest już dopasowany.

 334
Author: user437522,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-27 11:30:28

Możesz zainstalować csvtool (na Ubuntu) poprzez

sudo apt-get install csvtool

A następnie uruchom:

csvtool readable filename | view -

To sprawi, że będzie to ładne i ładne wewnątrz instancji Vima tylko do odczytu, nawet jeśli masz kilka komórek o bardzo długich wartościach.

 86
Author: d_chall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-02 07:39:38

Spójrz na csvkit . Dostarcza zestaw narzędzi, które są zgodne z filozofią Uniksa (co oznacza, że są małe, proste, jednokierunkowe i mogą być łączone).

Oto przykład, który wyodrębnia dziesięć najbardziej zaludnionych miast w Niemczech z darmowej bazy danych Maxmind World Cities i wyświetla wynik w formacie czytelnym dla konsoli:

$ 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 jest niezależny od platformy, ponieważ jest napisany w Pythonie.

 49
Author: Kai Sternad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-15 15:42:02

Tabview: lightweight python przeklina wiersza poleceń przeglądarkę plików CSV (a także inne tabelaryczne dane Pythona, takie jak lista list) jest tutaj na Github

Cechy:

  • Python 2.7+, 3.x
  • obsługa Unicode
  • widok podobny do arkusza kalkulacyjnego do łatwej wizualizacji danych tabelarycznych
  • vim-like navigation (h, j, k, l, g (Góra), G (dół), 12g Goto line 12, m-mark, '- goto mark, etc.)
  • przełącza stały wiersz nagłówka
  • dynamiczna zmiana rozmiaru szerokości kolumn i gap
  • Sortuj rosnąco lub malejąco według dowolnej kolumny. Sortowanie w kolejności 'naturalnej' dla wartości liczbowych.
  • Wyszukiwanie pełnotekstowe, N I p do przełączania między wynikami wyszukiwania
  • 'Enter', aby wyświetlić pełną zawartość komórki
  • przenieś zawartość komórki do schowka
  • F1 czy ? dla skrótów klawiszowych
  • może również używać z linii poleceń Pythona do wizualizacji dowolnych danych tabelarycznych (np. list-of-lists)
 33
Author: Scott Hansen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-19 14:35:20

Jeśli jesteś vimmer, użyj CSV plugin , który jest juuust beautiful.

 26
Author: P. Myer Nore,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-28 16:13:57

Pakiet nodejs tecfu/TTY-table można zainstalować globalnie, aby to zrobić:

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

tecfu / TTY-table

Może również obsługiwać strumienie.

Aby uzyskać więcej informacji, zobacz docs for terminal use here .

 11
Author: user3751385,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-01 01:04:41

Mój projekt FOSS CSVfix pozwala na wyświetlanie plików CSV w formacie tabeli "ASCII art".

 10
Author: Victor Sergienko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-13 17:36:27

Odpowiedź Ofriego daje Ci wszystko, o co prosiłeś. Ale.. jeśli nie chcesz zapamiętać komendy, możesz dodać ją do swojego~/.bashrc (lub odpowiednik):

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

Jest to dokładnie to samo co odpowiedź Ofri, z wyjątkiem tego, że owinąłem ją w funkcję powłoki i używam opcji less -S, aby zatrzymać owijanie linii(sprawia, że less zachowuje się bardziej jak office/oocalc).

Otwórz nową powłokę (lub wpisz source ~/.bashrc w bieżącej powłoce) i uruchom polecenie używając:

csview <filename>

 7
Author: pisswillis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-09 18:03:59

Xsv jest czymś więcej niż przeglądarką. Polecam go dla większości zadań CSV z linii poleceń, szczególnie w przypadku dużych zbiorów danych.

 7
Author: smartmic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-17 16:32:28

Długo korzystałem z odpowiedzi pisswillis.

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

Ale potem połączyłem jakiś kod, który znalazłem na http://chrisjean.com/2011/06/17/view-csv-data-from-the-command-line co mi działa lepiej:

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

Powodem, dla którego działa lepiej dla mnie, jest to, że lepiej radzi sobie z szerokimi kolumnami.

 5
Author: Tom Weiss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-25 17:16:30

Oto (prawdopodobnie zbyt) prosta opcja:

sed "s/,/\t/g" filename.csv | less
 4
Author: Ofri Raviv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-09 17:12:50

tblless w pakiecie Tabulator zawija polecenie unix column, a także wyrównuje kolumny liczbowe.

 4
Author: stefan.schroedl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-14 06:37:55

Używając TxtSushi możesz zrobić:

csvtopretty filename.csv | less -S
 3
Author: Keith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-02 07:48:31

I wrote this csv_view.sh aby sformatować pliki CSV z linii poleceń, odczytuje cały plik, aby określić optymalną szerokość każdej kolumny (wymaga Perla, zakłada, że w polach nie ma przecinków, używa również 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

 2
Author: Jean Vincent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-13 17:46:35

Kolejne wielofunkcyjne narzędzie do manipulacji CSV (i nie tylko): Miller . Z własnego opisu wynika, że jest to awk, sed, cut, join I sort dla danych indeksowanych nazwami, takich jak CSV, TSV i tabelaryczny JSON. (link do repozytorium github: https://github.com/johnkerl/miller )

 1
Author: Nikos Alexandris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-17 10:06:49

Napisałem skrypt, viewtab , w Groovy właśnie w tym celu. Wywołujesz to tak:

viewtab filename.csv

Jest to w zasadzie super lekki arkusz kalkulacyjny, który można wywoływać z wiersza poleceń, obsługuje pliki CSV i tabulatory, potrafi odczytywać bardzo duże pliki Excel i liczby i jest bardzo szybki. Nie jest wierszem poleceń w sensie tekstowym, ale jest niezależny od platformy i prawdopodobnie będzie pasował do rachunku dla wielu osób szukających rozwiązania problemu szybkie sprawdzanie wielu lub dużych plików CSV podczas pracy w środowisku wiersza poleceń.

Skrypt i jak go zainstalować są opisane tutaj:

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

 0
Author: James Durbin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-05 20:27:13

Jest taki krótki skrypt wiersza poleceń w Pythonie: https://github.com/rgrp/csv2ascii/blob/master/csv2ascii.py

Po prostu pobierz i umieść na swojej ścieżce. Użycie jest jak

csv2ascii.py [options] csv-file-path

Konwersja pliku csv w csv-file-path do postaci ascii zwracającej wynik na stdout. If csv-file-path = ' - ' then read from stdin.

Opcje:

  -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
 0
Author: Rufus Pollock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-10 12:04:13

Stworzyłemtablify do tych (i innych) celów. Zainstaluj za pomocą

[sudo -H] pip3 install tablify

I

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

Działa również wtedy, gdy dane są oddzielone czymś innym niż przecinkami. Co najważniejsze, zachowuje ograniczniki, dzięki czemu można go również używać do stylizacji tabel ASCII bez poświęcania składni [Markdown, CSV,LaTeX].

 0
Author: Nico Schlömer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-13 10:58:26

Tabview jest naprawdę dobry. Pracował z plikami 200 + MB, które wyświetlały się ładnie, które były wadliwe z LibreOffice, a także wtyczką csv w gvim.

Wersja anakonda jest dostępna tutaj: https://anaconda.org/bioconda/tabview

 0
Author: shankerj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-18 14:48:01