Просмотра командная строка CSV-файла? [закрытый]
кто-нибудь знает о средстве просмотра CSV командной строки для Linux/OS X? Я думаю о чем-то вроде less но это пробелы из столбцов более читаемым способом. (Я был бы в порядке, открыв его с помощью OpenOffice Calc или Excel, но это слишком подавлено для just просмотр данные, как мне нужно.) Наличие горизонтальной и вертикальной прокрутки было бы здорово.
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Он также может обрабатывать потоки.
для получения дополнительной информации см. документы для использования терминала здесь.
мой проект 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 }причина, по которой он работает лучше для меня, заключается в том, что он лучше обрабатывает широкие столбцы.
tbllessна табулятор пакет обертывает unixcolumnкоманда, а также выравнивает числовые столбцы.
С помощью 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