Просмотра командная строка CSV-файла? [закрытый]



кто-нибудь знает о средстве просмотра CSV командной строки для Linux/OS X? Я думаю о чем-то вроде less но это пробелы из столбцов более читаемым способом. (Я был бы в порядке, открыв его с помощью OpenOffice Calc или Excel, но это слишком подавлено для just просмотр данные, как мне нужно.) Наличие горизонтальной и вертикальной прокрутки было бы здорово.

700   19  

19 ответов:

вы также можете использовать это:

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 так как вторая запятая уже сопоставлена.

вы можете установить csvtool (на Ubuntu) через

sudo apt-get install csvtool

и затем выполнить:

csvtool readable filename | view -

это сделает его приятным и красивым внутри экземпляра vim только для чтения, даже если у вас есть некоторые ячейки с очень длинными значениями.

посмотреть csvkit. Он предоставляет набор инструментов, которые придерживаются философии UNIX (то есть они небольшие, простые, одноцелевые и могут быть объединены).

вот пример, который извлекает десять самых густонаселенных городов Германии из free база данных городов мира Maxmind и выводит результат в консольно-читаемом формате:

$ 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 не зависит от платформы, потому что он написан на Python.

Tabview: lightweight python curses command line csv file viewer (а также другие табличные данные Python, такие как список списков) находится здесь на Github

характеристики:

  • Python 2.7+, 3.x
  • поддержка Unicode
  • электронная таблица-как вид для легкой визуализации табличных данных
  • Vim-подобная навигация (h, j, k, l, g (сверху), G(снизу), 12G goto line 12, M-mark, - Гото Марк и др.)
  • переключить постоянный заголовок строки
  • динамически изменять ширину столбцов и зазор
  • сортировка по возрастанию или убыванию по любому столбцу. "Естественный" порядок сортировки для числовых значений.
  • полнотекстовый поиск, n и p для переключения между результатами поиска
  • "Enter" для просмотра полного содержимого ячейки
  • дергать содержимое ячейки в буфер обмена
  • F1 или ? для привязки клавиш
  • можно также использовать из командной строки python для визуализации любых табличных данных (например, список списков)

Если вы Виммер, используйте CSV плагин, который juuust красивая.

пакет nodejs tecfu / tty-table может быть установлен глобально сделать именно это:

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

tecfu/tty-table

Он также может обрабатывать потоки.

для получения дополнительной информации см. документы для использования терминала здесь.

мой проект FOSS CSVfix позволяет отображать CSV-файлы в формате таблицы "ASCII art".

ответ Офри дает вам все, что вы просили. Но.. если вы не хотите запоминать команду, вы можете добавить ее в свой ~/.bashrc (или эквивалент):

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

Это точно так же, как ответ Ofri, за исключением того, что я завернул его в функцию оболочки и использую less -S возможность остановить обертывание линий (делает less ведет себя больше как офис/oocalc).

откройте новую оболочку (или введите source ~/.bashrc в текущей оболочке) и выполните команду использование:

csview <filename>

xsv - это больше, чем зритель. Я рекомендую его для большинства задач CSV в командной строке, особенно при работе с большими наборами данных.

я использовал ответ писсуиллиса в течение длительного времени.

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

но затем объединил некоторый код, который я нашел в http://chrisjean.com/2011/06/17/view-csv-data-from-the-command-line который работает лучше для меня:

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

причина, по которой он работает лучше для меня, заключается в том, что он лучше обрабатывает широкие столбцы.

вот (наверное, тоже) простой вариант:

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

tblless на табулятор пакет обертывает unix column команда, а также выравнивает числовые столбцы.

С помощью TxtSushi вы можете сделать:

csvtopretty filename.csv | less -S

Я написал это csv_view.sh чтобы отформатировать CSVs из командной строки, это считывает весь файл, чтобы выяснить оптимальную ширину каждого столбца (требуется 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;
'  | less -NS

еще один многофункциональный CSV (и не только) инструмент манипуляции:Миллер. Из собственного описания он похож на awk, sed, cut, join и sort для индексированных по имени данных, таких как CSV, TSV и табличный JSON. (ссылка на репозиторий github:https://github.com/johnkerl/miller)

Я написал скрипт viewtab, в Groovy именно для этой цели. Вы вызываете его так:

viewtab filename.csv

это в основном супер-легкая электронная таблица, которая может быть вызвана из командной строки, обрабатывает CSV и файлы, разделенные вкладками, может читать очень большие файлы, которые Excel и числа задыхаются, и очень быстро. Это не командная строка в смысле только текст, но это не зависит от платформы и, вероятно, для многих людей, которые ищут решение проблема быстрой проверки многих или больших файлов CSV при работе в среде командной строки.

скрипт и как его установить описано здесь:

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

есть этот короткий скрипт командной строки в python:https://github.com/rgrp/csv2ascii/blob/master/csv2ascii.py

просто скачайте и поместите на своем пути. Использование похоже на

csv2ascii.py [options] csv-file-path

конвертировать csv файл в csv-file-path в форму ascii, возвращающую результат on стандартный вывод. Если 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

Я создал tablify для этих (и других) целей. Установите с помощью

[sudo -H] pip3 install tablify

и

$ 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 ,

также работает, если данные разделены чем-то еще, кроме запятых. Самое главное, это хранит разделители, поэтому вы также можете использовать его для стилизации таблиц ASCII без ущерба для вашего синтаксиса [Markdown,CSV,LaTeX].

Tabview действительно хорош. Работал с файлами 200+MB, которые хорошо отображались, которые были глючными с LibreOffice, а также плагином csv в gvim.

версия Anaconda доступна здесь:https://anaconda.org/bioconda/tabview

Comments

    Ничего не найдено.