Команда jq в Linux с примерами

Команда jq в Linux с примерами

JSON (от англ. JavaScript Object Notation) — текстовый формат обмена данными. Его особенностью является то, что люди могут его читать и писать на нем. JSON полностью независим от языка программирования, и может использоваться со многими из них, включая C, C++, C#, Java, JavaScript, Perl, Python и так далее. Функционал операционной системы Linux позволяет пользователям обрабатывать данные из JSON-файлов прямо в командной строке. Для этого можно использовать встроенную утилиту jq.

В этой статье мы расскажем, как применять команду jq для управления данными JSON в Linux.

Содержание:

  1. Пример содержимого файла JSON
  2. Вывод данных из файла JSON
  3. Получение определенного объекта из JSON-файла
  4. Вывод только определенных значений из всех объектов JSON
  5. Фильтрация данных JSON
  6. Преобразование данных JSON
  7. Объединение двух массивов JSON
  8. Сортировка и группировка данных JSON
  9. Выводы

Пример содержимого файла JSON

Для этого создадим файл input.json в формате JSON и запишем в него следующие данные:

 

input json

Читайте также: 12 альтернатив редактора Notepad++ для Linux.

Вывод данных из файла JSON

С помощью утилиты jq можно вывести на экран все данные из файла в формате JSON. Для этого следует использовать команду:

 

jq print json

Вы также можете перечислить только объекты из массива JSON. Чтобы это сделать, добавьте в предыдущую команду после точки квадратные скобки:

 

jq iterate objects in json

Получение определенного объекта из JSON-файла

У каждого объекта в файле формата JSON есть свой индекс. Первый объект имеет индекс 0, второй — 1, третий — 2 и так далее. Чтобы отобразить в терминале объект с индексом 0, выполните команду:

 

jq retrieve key

Функционал JSON позволяет использовать вложенную структуру данных, где элементами массива могут быть другие массивы. С помощью утилиты jq можно также получать доступ к вложенным элементам. Для этого применяется следующая команда:

 

Читайте также: 17 примеров использования top в Linux.

Допустим, нам нужно извлечь из первого объекта (с индексом 0) значение ключа name. Выполним в терминале:

 

Также извлечем из файла input.json значение city из первого объекта. Для этого нам сперва нужно добраться до ключа address, и только потом к city:

 

jq nested key

Вывод только определенных значений из всех объектов JSON

Вы можете вывести в терминал только значения нужных Вам ключей из всех объектов в JSON-файле. Для примера отобразим в окне командной строки только значения, которые имеют ключ name и city:

 

jq extract specific keys from each object

Фильтрация данных JSON

Вы можете фильтровать данные JSON по значениям ключей. Для этого используется команда:

 

Для примера выведем в терминале только объекты, значения ключей — age — которых больше 30:

 

jq filter objects

Читайте также: 5 команд для поиска файлов в Linux.

Преобразование данных JSON

Утилита jq позволяет пользователям создавать новые массивы JSON на основе данных из других массивов. К примеру, возьмем из файла input.json ключи name и age с их значениями и выведем их на экран:

 

jq map and transform JSON Data

Объединение двух массивов JSON

Допустим, у нас есть два массива input.json и input1.json. Мы можем с помощью команды jq объединить их. Для этого выполним в терминале:

 

jq merge two json

Сортировка и группировка данных JSON

Утилита jq имеет встроенную функцию sort_by, которая позволяет сортировать объекты массива по значениям ключей. К примеру, отсортируем input.json по значениям age:

 

Или:

 

jq sort objects

Читайте также: Как установить среду разработки Arduino IDE в Linux.

Встроенная функция group_by позволяет группировать объекты массива по одинаковым значениям ключей. Результатом группировки является массив, в котором каждый элемент представляет собой группу объектов с одинаковым значением ключа. Например:

 

jq group objects

Выводы

Мы показали Вам, как применять команду jq в Linux. Используя показанные примеры, Вы сможете фильтровать, сортировать, группировать и выполнять другие операции с данными JSON.

Спасибо за время, уделенное прочтению статьи!

Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасностиполный курс по кибербезопасностикурсы DevNet / DevOps (программируемые системы) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения


Поиск по сайту
Лучшее
Популярное
Рубрики