Обработка json в командной строке
Кто-то (например, эластик) выплюнул в консоль километровый json и надо с ним что-то делать? jq
придет на помощь!
Это утилита командной строки для работы с json - фильтрация, извлечение данных и т.п. Порог вхождения высокий, но стоит того, если частый кейс.
Простейший вариант использования - красиво отформатировать json, который выплевывает curl
. Для этого надо просто добавить -s
в curl
, чтобы не писал проценты скачивания, и добавить | jq
.
Более сложный кейс - изменение данных. Например, я использовал jq
, чтобы среди тонны индексов elasticsearch найти те, у которых неправильный индекс. Выглядело это примерно так:
cat 2.json | jq -r 'keys[] as $k | "\($k) -> \(.[$k] | .mappings.post.properties."availability-feed".properties.attributes.properties."owner-id")"' | grep long
Дока по jq: https://stedolan.github.io/jq/tutorial/.