Работа с 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.
Так же тут немного магии вокруг где список, а где просто входной поток документов и конвертации между ними.