Работа с JQ

Просмотр всех ключей документа

cat file.json | jq 'keys'

Составной запрос

cat rules.json | jq -c '[[.[][].user | select( . != null ) | split("|")] | flatten[] | sub("\\(";"") | sub("\\)";"")] | map(.+"@mts.ru")[]'

В этом запросе:

  • select(. != null) используется для фильтрации полей которые удовлетворяют условию.
  • split("|") каждую строку полученного списка (каждый входящий элемент) разбивает по символу ”|“.
  • flatten[] схлопывает вложенные списки на один уровень и предоставляет их в виде нового списка. Здесь flatten это функция, а [] формирует список.
  • sub("\\(";"") | sub("\\)";"") убирает из каждой строки символы открывающейся и закрывающейся скобки.
  • map(.+"@mts.ru") добавляет для каждой строки окончание @mts.ru.

Так же тут немного магии вокруг где список, а где просто входной поток документов и конвертации между ними.