Кто-нибудь знает о командной строке CSV-просмотра для Linux/OS X? Я думаю о чем-то вроде less
, но это пробелы в столбцах более читабельны. (Мне было бы неплохо открыть его с помощью OpenOffice Calc или Excel, но этот способ слишком силен, чтобы просто смотреть на данные, как мне нужно.) С горизонтальной и вертикальной прокруткой было бы здорово.
Командная строка CSV-просмотрщик?
Ответ 1
Вы также можете использовать это:
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
, так как вторая запятая уже сопоставлена.
Ответ 2
Вы можете установить csvtool
(на Ubuntu) с помощью
sudo apt-get install csvtool
а затем запустите:
csvtool readable filename | view -
Это сделает его приятным и красивым внутри экземпляра vim только для чтения, даже если у вас есть несколько ячеек с очень длинными значениями.
Ответ 3
Посмотрите csvkit. Он предоставляет набор инструментов, которые придерживаются философии UNIX (что означает, что они небольшие, простые, одноцелевые и могут быть объединены).
Вот пример, который извлекает десять самых населенных городов Германии из бесплатной базы данных Maxmind World Cities и отображает результат в формате, читаемом в консоли:
$ 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.
Ответ 4
Вкладка: облегченная строка командной строки python curses CSV файл (а также другие табличные данные Python, такие как список списков) находится здесь Github
Особенности:
- Python 2.7+, 3.x
- Поддержка Unicode
- Вид, похожий на таблицу, для простой визуализации табличных данных.
- Vim-подобная навигация (h, j, k, l, g (верхняя), G (внизу), 12G goto line 12, m-mark, '- goto mark и т.д.)
- Переключить строку с постоянным заголовком
- Динамическое изменение размеров и ширины столбцов.
- Сортировка по возрастанию или убыванию по любому столбцу. "Естественный" порядок сортировки для числовых значений.
- Полнотекстовый поиск, n и p для циклического переключения между результатами поиска
- 'Enter', чтобы просмотреть содержимое всей ячейки.
- Содержимое ячейки Янка в буфер обмена
- F1 или? для привязки клавиш
- Можно также использовать из командной строки python для визуализации любых табличных данных (например, список-из-списков)
Ответ 5
Если вы виммер, используйте плагин CSV, который красиво красив.
Ответ 6
В пакете nodejs tecfu/tty-table можно установить глобально:
apt-get install nodejs
npm i -g tty-table
cat data.csv | tty-table
Он также может обрабатывать потоки.
Для получения дополнительной информации см. docs для использования терминалов здесь.
Ответ 7
Мой проект FOSS CSVfix позволяет отображать CSV файлы в формате таблицы ASCII art.
Ответ 8
Ответ Ofri дает вам все, что вы просили. Но.. если вы не хотите помнить команду, вы можете добавить ее в свой ~/.bashrc(или эквивалент):
csview()
{
local file="$1"
sed "s/,/\t/g" "$file" | less -S
}
Это точно так же, как и ответ Ofri, за исключением того, что я завернул его в функцию оболочки, и я использую параметр less -S
, чтобы остановить обертку строк (делает less
ведет себя больше как офис /oocalc ).
Откройте новую оболочку (или введите source ~/.bashrc
в текущей оболочке) и запустите команду, используя:
csview <filename>
Ответ 9
xsv больше, чем зритель. Я рекомендую его для большинства задач CSV в командной строке, особенно при работе с большими наборами данных.
Ответ 10
Я использовал ответ pisswillis в течение длительного времени.
csview()
{
local file="$1"
sed "s/,/\t/g" "$file" | less -S
}
Но тогда объединенный код, который я нашел в http://chrisjean.com/2011/06/17/view-csv-data-from-the-command-line, который работает лучше для меня:
csview()
{
local file="$1"
cat "$file" | sed -e 's/,,/, ,/g' | column -s, -t | less -#5 -N -S
}
Причина, по которой он работает лучше для меня, заключается в том, что он лучше обрабатывает широкие столбцы.
Ответ 11
tblless
в пакете Tabulator обертывает команду unix column
, а также выравнивает числовые столбцы.
Ответ 12
Здесь (возможно, слишком) простой вариант:
sed "s/,/\t/g" filename.csv | less
Ответ 13
Используя TxtSushi, вы можете сделать:
csvtopretty filename.csv | less -S
Ответ 14
Я написал этот csv_view.sh для форматирования CSV из командной строки, это считывает весь файл, чтобы определить оптимальную ширину каждого столбца (требуется 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;
' $1 | less -NS
Ответ 15
Еще один многофункциональный инструмент для работы с CSV (и не только): Miller. По своему собственному описанию это похоже на awk, sed, cut, join и sort для индексированных по индексу данных, таких как CSV, TSV и табличный JSON. (ссылка на репозиторий github: https://github.com/johnkerl/miller)
Ответ 16
Я создал таблик для этих (и других) целей. Установите с
[sudo -H] pip3 install tablign
а также
$ cat test.csv
Header1,Header2,Header3
Pizza,Artichoke dip,Bob Special of the Day
BLT,Ham on rye with the works,
$ tablign test.csv
Header1 , Header2 , Header3
Pizza , Artichoke dip , Bob Special of the Day
BLT , Ham on rye with the works ,
Также работает, если данные разделены чем-то другим, кроме запятых. Самое главное, что он сохраняет разделители, поэтому вы также можете использовать его для стилизации таблиц ASCII, не жертвуя синтаксисом [Markdown, CSV, LaTeX].
Ответ 17
Я написал script, viewtab в Groovy только для этой цели. Вы вызываете его так:
viewtab filename.csv
В основном это супер-легкая электронная таблица, которая может быть вызвана из командной строки, обрабатывает файлы CSV и разделенные вкладками, может читать ОЧЕНЬ большие файлы, которые Excel и Numbers задыхаются, и очень быстро. Это не командная строка в смысле только для текста, но она независима от платформы и, вероятно, будет соответствовать векселю для многих людей, которые ищут решение проблемы быстрого осмотра многих или больших CSV файлов при работе в среде командной строки,
script и как его установить:
http://bayesianconspiracy.blogspot.com/2012/06/quick-csvtab-file-viewer.html
Ответ 18
В этой короткой командной строке script в python: https://github.com/rgrp/csv2ascii/blob/master/csv2ascii.py
Просто загрузите и разместите на своем пути. Использование похоже на
csv2ascii.py [options] csv-file-path
Преобразование csv файла в csv-file-path
в ascii-форму, возвращающую результат на
стандартный вывод. Если 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
Ответ 19
Tabview действительно хорош. Работал с 200 + МБ файлами, которые хорошо отображались с ошибкой с LibreOffice, а также с плагином csv в gvim.
Версия Anaconda доступна здесь: https://anaconda.org/bioconda/tabview