Я работаю с CSV-файлами, и иногда мне нужно быстро проверить содержимое строки или столбца из командной строки. Во многих случаях cut
, head
, tail
и друзья будут делать эту работу; тем не менее, сокращение не может легко справиться с такими ситуациями, как
"this, is the first entry", this is the second, 34.5
Здесь первая запятая является частью первого поля, но cut -d, -f1
не согласна. Прежде чем сам написать решение, мне было интересно, знает ли кто-нибудь о хорошем инструменте, который уже существует для этой работы. Он должен был бы, по крайней мере, иметь возможность обрабатывать приведенный выше пример и возвращать столбец из файла в формате CSV. Другие желательные функции включают возможность выбора столбцов на основе имен столбцов, указанных в первой строке, поддержку других стилей цитирования и поддержку файлов, разделенных табуляцией.
Если вы не знаете о таком инструменте, но у вас есть предложения по реализации такой программы на Bash, Perl или Python или других распространенных языках сценариев, я не возражаю против таких предложений.
источник
Возможно, я немного опоздал, но есть еще один инструмент, о котором стоит упомянуть: csvkit
http://csvkit.readthedocs.org/
У этого есть много инструментов командной строки, которые могут:
cut
,grep
,sort
и другие, но CSV-известно,источник
Похоже, работа для Perl с
Text::CSV
.Смотрите документацию о том, как обрабатывать имена столбцов. Разделитель и стиль цитирования могут быть настроены с параметрами
new
. Смотрите такжеText::CSV::Separator
для угадывания разделителя.источник
(t)csh
этой командой, она будет прекрасно работать в командной строке вашей оболочки. Вы всегда можете соединить эти строки вместе, если хотите, чтобы это было в одной строке. символ новой строки обычно такой же, как пробел в синтаксисе perl, как в C.-e
создает неявный цикл).Я нашел csvfix, инструмент командной строки делает свою работу хорошо. Вы должны будете сделать это самостоятельно однако:
http://neilb.bitbucket.org/csvfix
Он выполняет все то, что вы ожидаете, упорядочивает / выбирает столбцы, разделяет / объединяет и многое другое, что вам не хотелось бы генерировать вставки SQL из данных CSV и анализ данных CSV.
источник
Если вы хотите использовать командную строку (и не создаете целую программу для выполнения работы), вы хотели бы использовать строки , проект, над которым я работаю: это интерфейс командной строки для табличных данных, но также библиотека Python для использования в ваших программах. С помощью интерфейса командной строки вы можете печатать любые данные в CSV, XLS, XLSX, HTML или любом другом табличном формате, поддерживаемом библиотекой, с помощью простой команды:
Если
myfile.csv
это так:Затем строки будут печатать содержимое красивым способом, например так:
Установка
Если вы являетесь разработчиком Python и уже
pip
установили на свой компьютер, просто запустите внутри virtualenv или с помощьюsudo
:Если вы используете Debian:
Другие интересные функции
Преобразование форматов
Вы можете конвертировать между любыми поддерживаемыми форматами:
Запросы
Да, вы можете использовать SQL в файл CSV:
Преобразование вывода запроса в файл вместо stdout также возможно с помощью
--output
параметра.Как библиотека Python
Вы также можете использовать свои программы на Python:
Надеюсь, тебе понравится!
источник
R не мой любимый язык программирования, но он хорош для таких вещей. Если ваш CSV-файл
Внутри интерпретатора типа R
Что касается других ваших запросов, для «возможности выбора столбцов на основе имен столбцов, указанных в первой строке» см.
Для «поддержки других стилей цитирования» см.
quote
Аргумент read.csv (и связанных функций). Для "поддержки файлов, разделенных табуляцией" смотритеsep
аргумент read.csv (установленsep
в '\ t').Для получения дополнительной информации см. Онлайн-справку.
источник
Rscript
(часть базового дистрибутива R) или пакет дополненийlittler
. Вы можете сделать#!/usr/bin/env Rscript
или подобное.Я использовал csvtool один раз, и это сэкономило мне много времени и усилий. Вызывается из оболочки.
http://caml.inria.fr/cgi-bin/hump.en.cgi?contrib=447
источник
Miller - еще один хороший инструмент для манипулирования данными на основе имен, включая CSV (с заголовками). Чтобы извлечь первый столбец файла CSV, не обращая внимания на его имя, вы должны сделать что-то вроде
источник
awk
высокой степенью осведомленности о DSV.Или, вы можете попробовать магию awk . Однако я не очень хороший пользователь awk и не могу подтвердить, что это будет работать должным образом, и как это сделать.
источник
Взгляните также на GNU Recutils и crush-tools .
(через http://www.reddit.com/r/commandline/comments/mfcu9/anyone_using_gnu_recutils_is_it_outdatedsuperceded/ )
источник
Чтобы использовать python из командной строки, вы можете проверить pythonpy ( https://github.com/Russell91/pythonpy ):
источник
попробуйте "csvtool" этот пакет, это удобный инструмент командной строки для обработки файлов CSV
источник
cissy также выполняет обработку csv из командной строки. Он написан на C (маленький / легкий) с пакетами rpm и deb, доступными для большинства дистрибутивов.
Используя пример:
или же
или же
источник
Существует также библиотека Curry для чтения / записи файлов в формате CSV: CSV .
источник
У инструментов структурированного текста Github Repo есть полезный список соответствующих инструментов командной строки Linux. В частности, в разделе « Разделенные значения разделителя » перечислены несколько инструментов с поддержкой CSV, которые непосредственно поддерживают запрошенные операции.
источник
Я бы порекомендовал xsv - быстрый набор инструментов для командной строки CSV, написанный на Rust ( Github ).
Автор автором Ripgrep .
Во Как мы сделали наш CSV обработки 142x быстрее ( Reddit нити ).
источник
Одним из лучших инструментов является Миллер ( http://johnkerl.org/miller/doc/index.html ). Это как awk, sed, cut, join и sort для индексированных по имени данных, таких как CSV, TSV и табличный JSON.
В примере
дает тебе
Если вы хотите TSV
дает (можно удалить заголовок)
Если вы хотите первый и третий столбец, измените их порядок
дает тебе
источник
Если вам нужен визуальный / интерактивный инструмент в терминале, я искренне рекомендую VisiData.
Он имеет таблицы частот (показанные выше), сводки, плавления, диаграммы рассеяния, фильтрацию / вычисления с использованием Python и многое другое.
Вы можете передавать файлы CSV, как так
vd hello.csv
Есть варианты CSV конкретные:
--csv-dialect
,--csv-delimiter
,--csv-quotechar
, и--csv-skipinitialspace
для тонкой настройки обработки из CSV - файлов.источник
Awk решение
источник