Фільтри jq для щоденної роботи, згруповані за завданням: діставати значення, фільтрувати й вибирати, працювати з колекціями, перетворювати значення й рядки, змінювати форму на новий об'єкт або масив, оновлювати шляхи на місці, розгалужувати логіку та опановувати просунуту редукцію, а також прапорці командного рядка, що формують вхід і вихід. Кожен рядок поєднує фільтр із результатом, який він дає.
jq — це фільтр: він читає JSON зі stdin, виконує конвеєр виразів, розділених каналами, і пише JSON у stdout. Крапка — це поточне значення; усе будується на ній. Найшвидший спосіб навчитися — пропускати реальні дані через рецепти нижче й спостерігати за виводом. Запускайте їх як jq 'фільтр' файл.json або curl ... | jq 'фільтр'.
Довідкова таблиця · 65 записи
Рецепти jqExplained
65 of 65 rows
Доступ
Увесь ввід, форматований для читання.
Значення за ключем, або за вкладеними ключами.
Значення за ключем, чия назва містить спеціальні символи.
Перший елемент масиву (від'ємний індекс рахує з кінця).
Кожен елемент масиву, або кожне значення об'єкта, в окремому рядку.
Значення за ключем, або null, без помилки, коли ключа немає.
Фільтрація та вибір
Ввід без змін, коли умова істинна, інакше нічого.
Застосувати вираз до кожного елемента масиву і зібрати результати.
Відсортовані назви ключів, або значення, об'єкта як масив.
Довжина масиву або рядка, або кількість ключів в об'єкті.
Лише елементи, чиє age більше за 18, одним масивом.
Колекції
Істина, коли хоч один елемент, або коли кожен елемент, є істинним або проходить фільтр.
Істина, коли ключ k існує в об'єкті; in виконує той самий тест зі сторони ключа.
Перший елемент, останній, або лише перші n виводів f.
Найменше, або найбільше, значення в масиві.
Числа від 0 до n, кожне як окремий вивід.
Вкладені масиви, згорнуті в один плоский масив.
Істина, коли x трапляється десь у вводі; inside міняє ролі.
Застосувати f до кожного значення знизу вгору, потім відбудувати ввесь ввід.
Перетворення
Масив лише з поля price кожного елемента.
Сума масиву чисел, або злиття масиву об'єктів.
Привести значення до рядка, або числовий рядок до числа.
Кодувати ввід як JSON-рядок або base64.
Рядок у нижньому регістрі.
Рядки
Рядок зі значенням виразу, вплетеним у текст.
Замінити кожен збіг шаблону, або лише перший, на s.
Розбити рядок на масив за роздільником, або склеїти масив в один рядок.
Перевірити рядок проти шаблону, або витягти збіги та іменовані групи.
Зрізати префікс, або суфікс, лише коли він є.
Істина чи хибність: рядок починається, або закінчується, на s.
Рядок у верхньому регістрі.
Масив, кодований як CSV-рядок, TSV-рядок або взяті в лапки аргументи shell.
Зміна форми
Новий об'єкт лише з полями id та name вводу.
Масив імен усіх елементів items.
Масив об'єктів {key, value} з об'єкта.
Об'єкт, збудований з масиву об'єктів {key, value}.
Елементи, згруповані в підмасиви за полем cat.
Сортувати за полем, або лишити один елемент на кожен різний id.
Оновлення та шляхи
Оновити значення за ключем, пропустивши його через f.
Перезаписати значення за ключем на v.
Додати n до значення за count, на місці.
Читати, записувати або видаляти значення за шляхами, заданими як масиви.
Керування та логіка
a, коли c істинне, інакше b; elif — для додаткових гілок.
Виконати f; коли f ламається, натомість виконати g з текстом помилки.
Зупинитися з помилкою, що несе msg, якщо тільки try її не перехопить.
Взагалі жодного виводу; ця гілка просто зникає з результатів.
Поєднувати істинні та хибні значення, або перевернути одне.
Просунуте
Згорнути ввесь масив в одну наростаючу суму.
Як reduce, але видає стан після кожного кроку, а не лише останнього.
Наступний ввід, або ввесь решта вводу, підтягнутий посеред фільтра.
Значення як JSON-текст, або JSON-текст, розібраний назад у значення.
Base64-текст, декодований назад в оригінальний рядок.
Присвоєння в глибині структури, що створює відсутні рівні на шляху.
a, якщо воно не null і не false, інакше b (значення за замовчуванням).
Ввіз з одним вилученим ключем.
Кожен шлях у вводі як масив ключів, зверху вниз.
Змінні та CLI
Визначити $name як рядок зі shell, придатний до вживання у фільтрі.
Визначити $name з сирого JSON, для чисел, булевих значень, масивів або об'єктів.
Визначити $name як увесь вміст JSON-файлу.
Друкувати рядкові результати як є, без лапок і екранувань.
Друкувати кожен результат компактно в один рядок, без відступів.
Виконати фільтр один раз на null, щоб збудувати вивід з нічого.
Прочитати ввесь ввід в один масив до запуску фільтра.
Встановити код виходу з останнього виводу, щоб shell-скрипти могли перевіряти результат.
Значення змінної середовища, прочитане всередині фільтра.