jq

Проект jq · лицензия MIT

Достаёт нужное из JSON: ответов сервисов, выгрузок заказов и заявок. Агенту нужен, чтобы отфильтровать записи, посчитать суммы и сохранить таблицу CSV для Excel.

macOS · Windows · LinuxНа компьютере, на сервере и в контейнереБесплатно, MIT

✓ Проверено 01.10.2026: Docker Desktop 29.2.1 на Mac с Apple Silicon: одноразовый контейнер ubuntu:24.04 (Ubuntu 24.04.5, arm64), jq 1.8.2 - официальный файл jq-linux-arm64 с GitHub в ~/.local/bin. Что именно проверяли

Установить агентом ↓

Какую задачу решает

Разбирает JSON и достаёт из него нужное: поля, записи по условию, суммы и количество. Агент получает JSON отовсюду: ответы сервисов, выгрузки заказов и заявок, журналы программ. С jq он одной командой оставляет нужные записи, считает итоги и сохраняет таблицу CSV, которую можно открыть в Excel или Google Таблицах.

  • Оставляет в выгрузке только нужные записи: оплаченные заказы, заявки за неделю, ошибки из ответа сервиса.
  • Считает суммы и количество по дням, товарам или статусам.
  • Сохраняет результат таблицей CSV: запятые и кавычки в названиях товаров не ломают столбцы.
  • Показывает длинный ответ сервиса в читаемом виде и достаёт из него одно поле, например номер заказа или ссылку.
  • Работает в хуках Claude Code: примеры хуков в документации Claude Code разбирают JSON через jq.

Пример результата

Говоришь агенту

В папке exports лежит orders.json, выгрузка заказов магазина. Оставь оплаченные, посчитай суммы по дням по московскому времени и по товарам, сохрани два CSV для Excel и проверь, что итоги сходятся.

Что получится

Рядом появляются by_day.csv и by_product.csv: в первом день, число заказов и сумма, во втором товар, штуки и сумма. Агент показывает первые строки, сверяет, что итог по дням и по товарам одинаковый, и называет его. Файл orders.json не меняется.

Паспорт

Кто делает
Проект jq
Сайт
jqlang.org
Исходный код
github.com/jqlang/jq
Инструкция
jqlang.org/download
Лицензия
MIT
Версия
1.8.2 на 01.10.2026
Системы
macOS · Windows · Linux
Где работает
На компьютере, на сервере и в контейнере
Цена
Бесплатно
Проверка
Проверено 01.10

Установить агентом

Для Claude Code, Codex, Hermes и любого агента с терминалом
Установи программу «jq». Работай по шагам и после каждого коротко говори, что сделал.

Что это за программа (каталог smyslokod.ru, официальные источники сверены 01.10.2026):
- официальный сайт: https://jqlang.org/
- исходный код: https://github.com/jqlang/jq
- инструкция по установке: https://jqlang.org/download/
- актуальная версия на 01.10.2026: 1.8.2
- лицензия: MIT
- для работы нужно (в отдельных случаях): curl - только чтобы скачать готовый файл на Linux: в минимальных системах и контейнерах его нет, в Ubuntu и Debian он ставится командой apt-get install curl ca-certificates
- для работы нужно (в отдельных случаях): Homebrew - на Mac, если jq в системе нет или нужна версия новее встроенной

Правила:
1. Ничего не устанавливай и не меняй, пока я не скажу «да» на твой план.
2. Ставь только способами из этого промпта. Сторонние сборки, скрипты с форумов и из чужих репозиториев не бери.
3. Мои проекты не трогай: не меняй их файлы, виртуальные окружения и списки зависимостей (package.json, requirements.txt, pyproject.toml).
4. Команды с sudo, правку профиля оболочки (~/.zshrc, ~/.bashrc) и переменной PATH делай только после моего отдельного «да» на каждую.
5. Не проси у меня пароли и ключи и не выводи их. Если нужен пароль администратора, дай команду, я выполню её сам.
6. Исходные файлы не меняй: результат jq сохраняй в новый файл и не пиши в тот же файл, который читаешь.
7. Сложный фильтр клади в файл и запускай jq -f файл. Значения передавай через --arg и --argjson, переменные оболочки внутрь фильтра в двойных кавычках не подставляй.
8. Перед подсчётом денег посмотри типы полей (например, jq '.orders[0] | map_values(type)' файл): числа там или строки. Итог округляй до копеек, для дней по Москве прибавляй 10800 секунд ко времени UTC.
9. CSV собирай через @csv или @tsv с флагом -r, поля через запятую вручную не склеивай. После сохранения покажи первые строки файла и сверь итог другим способом, например с суммой исходного поля.
10. Если стоит jq старше 1.8.2, а разбирать предстоит чужие данные (ответы сервисов, файлы от посторонних людей), скажи мне и предложи обновить способом из этого промпта.
11. После скачивания готового файла с GitHub сверь его SHA-256 с файлом sha256sum.txt со страницы выпуска и покажи результат.
12. На Windows сохраняй вывод jq в файл из Git Bash или cmd: в Windows PowerShell 5.1 оператор > пишет файл в UTF-16LE (так в документации PowerShell).

Шаги:
0. Определи, где ты работаешь: мой компьютер, сервер или контейнер. Какая система и процессор, какие менеджеры пакетов есть (Homebrew, apt, winget, uv, pipx). Ставить нужно туда, где ты сам запускаешь команды.
   - на компьютере: на Mac сначала посмотри jq --version: в macOS 15 и новее jq уже есть. На Windows - winget, на Linux - готовый файл в ~/.local/bin без sudo или пакет дистрибутива.
   - на сервере: готовый файл в ~/.local/bin ставится одной командой, без sudo и зависимостей. Если агент разбирает ответы чужих сервисов, бери 1.8.2 с исправлениями безопасности: пакет дистрибутива может быть старше.
   - в контейнере: в чистом образе ubuntu:24.04 нет ни jq, ни curl: сначала apt-get install curl ca-certificates, потом готовый файл. Базы часовых поясов там тоже нет. Есть официальный образ ghcr.io/jqlang/jq для amd64, arm64 и других процессоров.
1. Проверь, не стоит ли программа уже: jq --version ; which -a jq. Если стоит и запускается, ничего не ставь и переходи к шагу 5.
2. Обязательных зависимостей у программы нет, то, что нужно в отдельных случаях, перечислено выше. Проверь свободное место на диске: нужно около 2 МБ (готовый файл для Linux - 1,8 МБ для arm64 и 2,3 МБ для amd64, для Windows - 1,0 МБ, для Mac - 0,8 МБ; пакет Ubuntu вместе с библиотеками libjq1 и libonig5 - 1,2 МБ; Homebrew скачивает jq и oniguruma, около 0,9 МБ).
3. Составь план: каким одним способом из списка ниже будешь ставить, что появится на диске и сколько места займёт, что поменяется в системе и как потом удалить. Покажи план и жди моего «да».
   Способы из официальных источников:
   - macOS, Homebrew: brew install jq (ставит 1.8.2 вместе с библиотекой oniguruma; встроенный /usr/bin/jq остаётся, which -a jq покажет обе копии)
   - Windows, winget: winget install jqlang.jq (в каталоге winget 1.8.2 для x64, ARM64 и x86; ставится как переносная программа, папку с командой jq winget дописывает в PATH, и видно её только в новом окне терминала)
   - Linux, готовый файл с GitHub: mkdir -p ~/.local/bin && curl -fL -o ~/.local/bin/jq https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-linux-amd64 && chmod +x ~/.local/bin/jq (для процессоров x86_64, их же называют amd64; sudo не нужен; если ~/.local/bin нет в PATH, запускай ~/.local/bin/jq)
   - Linux, готовый файл с GitHub: mkdir -p ~/.local/bin && curl -fL -o ~/.local/bin/jq https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-linux-arm64 && chmod +x ~/.local/bin/jq (для процессоров ARM64, их же называют aarch64)
   - Linux, apt: sudo apt-get install jq (Debian и Ubuntu; в Ubuntu 24.04 это 1.7.1 (jq --version пишет jq-1.7), и в нём закрыта только часть уязвимостей из 1.8.2; в Ubuntu 26.04 - 1.8.1)
   - Linux, dnf: sudo dnf install jq (Fedora; в Fedora 44 это 1.8.1)
   - Linux, pacman: sudo pacman -S jq (Arch Linux, версия 1.8.2)
4. Установи по согласованному плану. Если что-то идёт не так, как в плане, остановись и спроси.
5. Проверь результат:
   - jq --version: программа запускается без ошибки;
   - Сделай маленькую выгрузку orders.json: два оплаченных заказа и один отменённый, второй оплачен в 00:40 по Москве. Оставь оплаченные, посчитай суммы по дням по московскому времени и по товарам, сохрани два CSV и покажи их. Итог по дням и по товарам должен совпасть, 4370.3, а второй заказ должен попасть в 29.09. Делай это во временной папке и не трогай мои файлы.
     printf '%s\n' '{"orders":[{"id":1,"created_at":"2026-09-28T09:15:00.000Z","status":"paid","total":2980,"items":[{"title":"Футболка \"Смысл\", белая","qty":2,"price":1490}]},{"id":2,"created_at":"2026-09-28T21:40:00.000Z","status":"paid","total":1390.3,"items":[{"title":"Кружка","qty":1,"price":690.5},{"title":"Наклейки, набор из 5","qty":2,"price":349.9}]},{"id":3,"created_at":"2026-09-29T10:05:00.000Z","status":"cancelled","total":3990,"items":[{"title":"Худи серое","qty":1,"price":3990}]}]}' > orders.json
     jq '[.orders[] | select(.status == "paid")] | length' orders.json
     jq -r '["день","заказов","сумма"], ([.orders[] | select(.status == "paid") | {day: (.created_at[0:19] + "Z" | fromdateiso8601 + 10800 | strftime("%Y-%m-%d")), total}] | group_by(.day)[] | [.[0].day, length, (map(.total) | add * 100 | round / 100)]) | @csv' orders.json > by_day.csv
     jq -r '["товар","штук","сумма"], ([.orders[] | select(.status == "paid") | .items[] | .qty //= 1] | group_by(.title)[] | [.[0].title, (map(.qty) | add), (map(.qty * .price) | add * 100 | round / 100)]) | @csv' orders.json > by_product.csv
     cat by_day.csv by_product.csv
   - если ты работаешь в папке моего проекта, покажи git status: от установки в проекте не должно появиться изменений.
6. Итог одним сообщением: что установлено, какой версии и куда, сколько места заняло, что поменялось в системе и как всё удалить (macOS, Homebrew: brew uninstall jq; Windows, winget: winget uninstall jqlang.jq; Linux, готовый файл с GitHub: rm -f ~/.local/bin/jq; Linux, apt: sudo apt-get remove jq; Linux, dnf: sudo dnf remove jq; Linux, pacman: sudo pacman -R jq).

Если на любом шаге ошибка, не чини наугад: покажи текст ошибки и скажи, что, по-твоему, случилось. Частые проблемы: https://smyslokod.ru/cli/jq#problemy

Промпт собран из официальных инструкций, сверенных 01.10.2026. Агент сначала проверит, что уже стоит, покажет план с местом на диске и способом удаления и без твоего «да» ничего не поставит.

Как ставят вручную

Способы из официальных источников, у каждого ссылка на первоисточник.

  • macOS · Homebrew · источник

    brew install jq

    ставит 1.8.2 вместе с библиотекой oniguruma; встроенный /usr/bin/jq остаётся, which -a jq покажет обе копии

  • Windows · winget · источник

    winget install jqlang.jq

    в каталоге winget 1.8.2 для x64, ARM64 и x86; ставится как переносная программа, папку с командой jq winget дописывает в PATH, и видно её только в новом окне терминала

  • Linux · готовый файл с GitHub · источник

    mkdir -p ~/.local/bin && curl -fL -o ~/.local/bin/jq https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-linux-amd64 && chmod +x ~/.local/bin/jq

    для процессоров x86_64, их же называют amd64; sudo не нужен; если ~/.local/bin нет в PATH, запускай ~/.local/bin/jq

  • Linux · готовый файл с GitHub · источник

    mkdir -p ~/.local/bin && curl -fL -o ~/.local/bin/jq https://github.com/jqlang/jq/releases/download/jq-1.8.2/jq-linux-arm64 && chmod +x ~/.local/bin/jq

    для процессоров ARM64, их же называют aarch64

  • Linux · apt · источник

    sudo apt-get install jq

    Debian и Ubuntu; в Ubuntu 24.04 это 1.7.1 (jq --version пишет jq-1.7), и в нём закрыта только часть уязвимостей из 1.8.2; в Ubuntu 26.04 - 1.8.1

  • Linux · dnf · источник

    sudo dnf install jq

    Fedora; в Fedora 44 это 1.8.1

  • Linux · pacman · источник

    sudo pacman -S jq

    Arch Linux, версия 1.8.2

Как удалить

  • macOS, Homebrew: brew uninstall jq
  • Windows, winget: winget uninstall jqlang.jq
  • Linux, готовый файл с GitHub: rm -f ~/.local/bin/jq
  • Linux, apt: sudo apt-get remove jq
  • Linux, dnf: sudo dnf remove jq
  • Linux, pacman: sudo pacman -R jq

Что нужно для работы

  • curl (в отдельных случаях) - только чтобы скачать готовый файл на Linux: в минимальных системах и контейнерах его нет, в Ubuntu и Debian он ставится командой apt-get install curl ca-certificates
  • Homebrew (в отдельных случаях) - на Mac, если jq в системе нет или нужна версия новее встроенной

Системы

  • macOS - в macOS 15 и новее jq уже есть в системе (/usr/bin/jq, на macOS 26.6 это версия 1.7.1 от Apple). Версия 1.8.2 ставится через Homebrew, есть и готовые файлы для Apple Silicon и Intel.
  • Windows - готовые файлы для x64, ARM64 и 32-битной Windows, ставится через winget.
  • Linux - готовый файл без зависимостей для amd64, arm64 и других процессоров или пакет дистрибутива; в Ubuntu 24.04 и Debian 13 пакет старше, 1.7.1.

Где запускать

Ставить нужно туда, где работает агент: на твой компьютер, сервер или в контейнер.

  • На компьютере - на Mac сначала посмотри jq --version: в macOS 15 и новее jq уже есть. На Windows - winget, на Linux - готовый файл в ~/.local/bin без sudo или пакет дистрибутива.
  • На сервере - готовый файл в ~/.local/bin ставится одной командой, без sudo и зависимостей. Если агент разбирает ответы чужих сервисов, бери 1.8.2 с исправлениями безопасности: пакет дистрибутива может быть старше.
  • В контейнере - в чистом образе ubuntu:24.04 нет ни jq, ни curl: сначала apt-get install curl ca-certificates, потом готовый файл. Базы часовых поясов там тоже нет. Есть официальный образ ghcr.io/jqlang/jq для amd64, arm64 и других процессоров.

Сколько ресурсов нужно

Место на диске
Около 2 МБ (готовый файл для Linux - 1,8 МБ для arm64 и 2,3 МБ для amd64, для Windows - 1,0 МБ, для Mac - 0,8 МБ; пакет Ubuntu вместе с библиотеками libjq1 и libonig5 - 1,2 МБ; Homebrew скачивает jq и oniguruma, около 0,9 МБ)
Память
jq читает файл в память целиком. На выгрузке в 100 000 заказов (38 МБ) отчёты по дням и по товарам заняли 270-300 МБ памяти и 0,7-1 с, подсчёт оплаченных - 250 МБ и 0,5 с (замер в контейнере на Mac с Apple Silicon). Для файлов больше памяти есть режим --stream: тот же подсчёт в нём занял 2 МБ памяти и 1,1 с.
Видеокарта
Не нужна.
Сеть
Только чтобы скачать программу. Данные jq обрабатывает на месте и никуда не отправляет.

Лицензия и платные замены

Лицензия MIT. Код jq идёт под MIT, так сказано в файле COPYING. Документация и сайт (папка docs) - под CC BY 3.0. Встроенные части со своими разрешительными условиями перечислены там же: библиотека decNumber (ICU License), код из Heimdal и NetBSD (BSD), dtoa.c. Условия важны тем, кто распространяет jq вместе со своим продуктом; чтобы обрабатывать свои файлы, делать ничего не нужно. Текст лицензии

Цена: Бесплатно

Платные замены

Платной замены, которую агент вызывал бы так же, нет: jq, gojq, jaq и DuckDB бесплатные. В Excel JSON загружают руками через Power Query: Данные → Получить данные → Из файла → Из JSON.

Бесплатные замены

  • gojq - Программа на Go с тем же языком фильтров. Её автор itchyny пишет и исправления для самого jq. Считает большие целые числа без потерь, читает и пишет YAML, но порядок ключей в объектах не сохраняет. Лицензия MIT.
  • jaq - Клон jq на Rust: автор делает упор на правильность, скорость и простоту. Лицензия MIT.
  • DuckDB - Встраиваемая база данных с консольной программой duckdb: читает JSON и CSV, считает запросом SQL и сохраняет результат в CSV или сразу в файл Excel (xlsx). Лицензия MIT.

О чём помнить

  • Обновляй jq до 1.8.2, если агент разбирает чужие данные: ответы сервисов, файлы от посторонних людей. В 1.8.2 закрыли 16 уязвимостей (CVE), три из них проект отметил как высокой важности. Пакет Ubuntu 24.04 (1.7.1) по трекеру Ubuntu получил исправления шести из них, ещё десять на 01.10.2026 не закрыты.
  • Суммы с копейками jq считает в дробных числах: 349.90 * 7 даёт 2449.2999999999997. Итог округляй до копеек: add * 100 | round / 100.
  • Если суммы в выгрузке записаны строками в кавычках ("1490.00"), add склеит их в "1490.00690.50" без всякой ошибки, а умножение на число повторит строку. Переводи такие поля в числа: tonumber.
  • Время в выгрузках обычно в UTC. Заказ, оплаченный в 00:40 по Москве, записан как 21:40 прошлого дня и при подсчёте по дате из строки уедет во вчера. Для дня по Москве прибавляй 3 часа (10800 секунд). TZ=Europe/Moscow не поможет там, где нет базы часовых поясов, например в чистом контейнере Ubuntu: jq молча покажет время UTC.
  • Excel открывает CSV в UTF-8 двойным щелчком правильно, только если в начале файла есть метка BOM (так в справке Microsoft). jq пишет файл без неё: агент добавит метку командой printf '\357\273\277' перед выводом jq, или открывай файл через Данные → Получить данные → Из файла → Из текстового/CSV-файла.
  • Не пиши результат в тот же файл, который jq читает: jq ... orders.json > orders.json оставит пустой файл. Сначала сохрани во временный файл, потом переименуй.
  • На Mac с macOS 15 и новее после brew install jq в системе две копии: /usr/bin/jq от Apple и jq из Homebrew. which -a jq покажет обе, работает та, что раньше в PATH.
  • apt-get remove jq оставляет библиотеки libjq1 и libonig5. Их убирает apt-get autoremove, но он удаляет и другие ненужные пакеты: сначала посмотри список.

Частые проблемы

jq: command not found сразу после установки готового файла

Папки ~/.local/bin нет в PATH. В Ubuntu её добавляет ~/.profile обычного пользователя при следующем входе, а в ~/.profile у root такой строки нет. Запускай jq полным путём ~/.local/bin/jq или добавь папку в PATH: это правка профиля оболочки, агент сделает её с твоего «да».

Cannot index array with string ("status") или Cannot index number with string ("status")

Фильтр смотрит не на тот уровень: забыли [] после имени списка (.orders вместо .orders[]) или файл в формате JSON Lines, где каждая строка - отдельный объект. Перебирай элементы: .orders[] | select(.status == "paid"). Для JSON Lines добавь -s, тогда строки соберутся в один массив. Структуру файла покажут jq 'keys' orders.json и jq '.orders[0]' orders.json.

date "2026-09-28T06:12:45.120Z" does not match format "%Y-%m-%dT%H:%M:%SZ"

fromdateiso8601 понимает только время вида 2026-09-28T06:12:45Z: без долей секунды, без смещения вроде +03:00 и с Z в конце. Если в конце Z, срежь доли секунды: .created_at[0:19] + "Z" | fromdateiso8601. Если в конце смещение, первые 19 знаков уже местное время этого пояса: при +03:00 день по Москве - это .created_at[0:10].

null (null) and number (690.50) cannot be multiplied

В части записей нет поля: например, в позиции заказа не указано количество. Посмотри, у каких записей поля нет, и подставь значение по умолчанию: (.qty // 1) * .price или .qty //= 1 перед расчётом.

object ({"id":1001,...}) cannot be csv-formatted, only array

@csv и @tsv принимают только массив значений одной строки таблицы. Собери строку массивом: [.day, .count, .sum] | @csv, и запускай jq с -r.

В CSV каждая строка в кавычках и с обратными косыми: "1001,\"paid\""

jq запущен без -r и выводит готовую строку CSV как строку JSON. Добавь флаг -r (--raw-output).

parse error: Invalid numeric literal at line 1, column ...

На вход пришёл не JSON: например, сервис вернул страницу ошибки в HTML или файл на самом деле CSV. Посмотри начало файла или ответа: head -c 300 файл. Если там страница ошибки или входа, причину ищи в запросе к сервису.

syntax error, unexpected ')' и jq: 1 compile error

Фильтр взят в двойные кавычки, и оболочка подставила вместо переменной $s пустое место. Бери фильтр в одинарные кавычки, а значение передавай через --arg: jq --arg s paid '.orders[] | select(.status == $s)' orders.json.

На Windows фильтр из примеров не работает в PowerShell или cmd

У Windows свои правила кавычек, руководство jq описывает их отдельно. В PowerShell фильтр в одинарных кавычках, а двойные внутри с обратной косой: jq '.[\"foo\"]'. В cmd всё в двойных: jq ".[\"foo\"]". Проще положить фильтр в файл и запускать jq -f filter.jq.

Проверка

✓ Проверено 01.10.2026: Docker Desktop 29.2.1 на Mac с Apple Silicon: одноразовый контейнер ubuntu:24.04 (Ubuntu 24.04.5, arm64), jq 1.8.2 - официальный файл jq-linux-arm64 с GitHub в ~/.local/bin.

Когда
01.10.2026
Среда
Docker Desktop 29.2.1 на Mac с Apple Silicon: одноразовый контейнер ubuntu:24.04 (Ubuntu 24.04.5, arm64), jq 1.8.2 - официальный файл jq-linux-arm64 с GitHub в ~/.local/bin
Объём
Установили и прогнали задачу на тестовых данных
Что именно сделали
  1. Одноразовый контейнер (docker run --rm, --cpus 2, --memory 3g) из образа ubuntu:24.04: Ubuntu 24.04.5 LTS, arm64. В образе нет jq, curl и Python: jq --version - command not found.
  2. Для команды установки поставлен curl: apt-get install curl ca-certificates, 18 пакетов, 4,6 с.
  3. Команда из карточки для arm64 без изменений: mkdir -p ~/.local/bin && curl -fL -o ~/.local/bin/jq .../jq-1.8.2/jq-linux-arm64 && chmod +x ~/.local/bin/jq, 0,5 с. Файл 1 797 688 байт, собран статически (ldd: not a dynamic executable), SHA-256 совпал с sha256sum.txt выпуска.
  4. У root в контейнере ~/.local/bin нет в PATH: команда jq не находится, ~/.local/bin/jq --version - jq-1.8.2. В Ubuntu эту папку добавляет в PATH ~/.profile обычного пользователя (/etc/skel/.profile), если она есть при входе.
  5. Тестовая выгрузка orders.json сделана в контейнере: 16 выдуманных заказов за 28-30.09.2026, из них 11 оплаченных, 2 отменённых, по одному возврату, ожиданию и отказу. Время в UTC с долями секунды, 3 заказа оплачены после полуночи по Москве, в названиях товаров запятые и кавычки, в одной позиции нет количества.
  6. Ошибки по ходу: .orders | select(...) - Cannot index array with string ("status"); позиция без количества - null (null) and number (690.50) cannot be multiplied; fromdateiso8601 на времени с долями секунды, со смещением +03:00 и без Z - does not match format; @csv на объекте - cannot be csv-formatted, only array; без -r строки CSV вышли с обратными косыми.
  7. Отчёты фильтрами из файлов (jq -r -f): оплаченные заказы по дням по московскому времени (.[0:19] + "Z", потом +10800 секунд) и по товарам (.qty //= 1), суммы округлены до копеек. Оба CSV готовы за 2 мс.
  8. Результат прочитали: по дням 28.09 - 3 заказа на 5750, 29.09 - 5 на 9281.1, 30.09 - 3 на 8951.1; по товарам 5 строк, итог 23982.2 совпал с суммой поля total у оплаченных заказов. По дате из строки UTC на 28.09 пришлось бы 5 заказов на 7940.8.
  9. Сверка другим способом: awk по TSV из jq дал те же суммы по товарам, date с TZ=MSK-3 - те же суммы по дням. Файлы CSV скопированы из контейнера и разобраны модулем csv из Python: в каждой строке 3 столбца, название с запятой и кавычками целое; склейка полей через join(",") дала 4 столбца.
  10. Без округления вышли 2759.3999999999996 и 2449.2999999999997. Суммы строками "1490.00" и "690.50" add склеил в "1490.00690.50" с кодом 0, умножение на 2 повторило строку, tonumber решил. Длинный номер 12345678901234567891 jq вывел и записал в CSV без потерь, после + 0 стало 12345678901234567000.
  11. В образе нет /usr/share/zoneinfo: TZ=Europe/Moscow со strflocaltime молча дал время UTC (21:40 вместо 00:40), TZ=MSK-3 и сдвиг +10800 дали верное 00:40 следующего дня. jq ... copy.json > copy.json оставил файл пустым, 0 байт, с кодом 0. Метка BOM через printf '\357\273\277' легла в начало CSV.
  12. Большая выгрузка: 100 000 заказов, 38 164 910 байт, сделана jq за 0,85 с. Отчёт по дням - 0,69 с и 263 МиБ памяти (GNU time), по товарам - 1,0 с и 284 МиБ; подсчёт оплаченных с --stream - 1,13 с и 2 МиБ. Файл JSON Lines без -s: map дал Cannot index number with string, с -s счёт верный.
  13. jq-linux-amd64 скачан той же командой (2 267 912 байт, SHA-256 совпал) и запущен в том же контейнере через эмуляцию x86_64 в Docker Desktop: jq-1.8.2, оба CSV байт в байт как у arm64, большой отчёт по товарам - 1,9 с.
  14. Для сравнения apt-get install jq: 1.7.1-3ubuntu0.24.04.2 вместе с libjq1 и libonig5, 1,2 МБ, 1,2 с; jq --version пишет jq-1.7, which -a jq показал две копии. CSV на 1.7.1 вышли байт в байт такими же. apt-get remove jq оставил libjq1 и libonig5, их убрал apt-get autoremove.
  15. Команды проверки из промпта карточки на заново поставленном 1.8.2 во временной папке: 2 оплаченных заказа, по дням 28.09 - 2980 и 29.09 - 1390.3, по товарам 3 строки, итог 4370.3. Удаление rm -f ~/.local/bin/jq: команды jq больше нет. Контейнер удалён.
ДатаВерсияОбъёмГдеИтог
01.10.20261.8.2задачаконтейнер, Linuxполучилось
01.10.20261.8.2источникибез установкиполучилось

«Проверено» ставим, только когда сами поставили программу и прогнали её на задаче. Сверка ссылок и вывод версии так не называются.

Программу делают её авторы. Мы сверяем официальные источники и описываем, что ей нужно, но код остаётся чужим. Перед установкой посмотри план агента: что он поставит и что поменяет в системе.