TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #134 986
jq для обработки JSON: базовые и продвинутые примеры

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

1. Чтение и форматирование JSON. Вывести JSON с красивым форматированием:


echo '{"name": "Alice", "age": 30, "city": "Paris"}' | jq .


. - это самый простой фильтр, который просто выводит входной JSON.

2. Извлечение конкретного значения. Извлечь значение поля name:


echo '{"name": "Alice", "age": 30}' | jq '.name'


Вывод:

"Alice"


3. Фильтрация массива. Вывести имена из массива объектов:


echo '[{"name": "Alice"}, {"name": "Bob"}]' | jq '.[].name'


Вывод:

"Alice"
"Bob"


Продвинутые примеры

1. Условная фильтрация. Отфильтруем объекты, где age больше 25:


echo '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 20}]' | jq '.[] | select(.age > 25)'


Результат:

{"name": "Alice", "age": 30}


2. Преобразование структуры данных. Изменим структуру JSON, преобразовав ключи в массив:


echo '{"name": "Alice", "age": 30}' | jq 'to_entries | map({(.key): .value})'


Результат:

[{"name":"Alice"}, {"age":30}]


3. Группировка данных. Группировка массива по определённому полю:


echo '[{"name": "Alice", "group": "admin"}, {"name": "Bob", "group": "user"}, {"name": "Charlie", "group": "admin"}]' | jq 'group_by(.group) | map({group: .[0].group, members: .})'


Результат:

[{"group":"admin","members":[{"name":"Alice","group":"admin"},{"name":"Charlie","group":"admin"}]}, {"group":"user","members":[{"name":"Bob","group":"user"}]}]


Объединение данных

1. Объединение JSON из двух файлов. Объединим данные из file1.json и file2.json:


jq -s '.[0] * .[1]' file1.json file2.json


-s читает все входные файлы в массив.
* объединяет два JSON-объекта.

👍 Полезные советы

Используйте jq с curl для обработки данных из API:


curl -s https://api.example.com/data | jq '.items[] | {name: .name, id: .id}'


Фильтруйте сложные JSON-файлы:


jq '.store.book[] | select(.price < 10)' books.json


Это выведет все книги с ценой меньше 10.

---

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

BashTex 📱 #linux #utils
  • 👍 12
More from @bash_tex
  1. Oct 13, 2026openat2(): как Linux защищает от выхода за пределы каталога Допустим, приложение должно чи…
  2. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  3. Oct 9, 2026BashTex 📱 #мем
  4. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  5. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  6. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →