Я нашел эту тему, которая похожа на вашу проблему. Он называется: Finde Info.plist.
выдержка
В 10.8 и более поздних версиях процесс агента CFPreferences (cfprefsd) будет кэшировать информацию из этих файлов и асинхронно записывать в них. Это означает, что прямое изменение plist-файлов вряд ли даст ожидаемые результаты (новые настройки не обязательно будут считаны и даже могут быть перезаписаны). Для взаимодействия с системой предпочтений следует использовать API NSUserDefaults или CFPreferences, или команду defaults(1).
Источник: Примечание о выпуске
Эта тема также указывает на эту статью под названием: Как вручную редактировать plist-файлы defaults в Mavericks.
Здесь у вас есть два основных варианта (с вашим полным файлом):
jq '.categories[][].notificationURL' bundle.json
jq '.categories[] |.[].notificationURL' bundle.json
В первом вы применяете операцию []
два раза подряд, а во втором вы составляете два отдельных фильтра вместе с оператором канала. Я считаю, что использование дополнительных каналов намного проще в работе и отладке, но они оба идентичны для ваших целей.
.[]
общая итерация всегда применяется к одному входному значению этой итерации, поэтому она должна быть первым элементом в выражении и является синтаксической ошибкой в любом другом месте, но []
применяется к определенному значению слева от него -все в порядке.
Сам факт того, что можно писать abc[]
вообще, а не только .[]
, плохо -описан в документации jq, но можно. Вы можете думать о .[]
как о применении []
к фильтру идентичности .
, хотя я думаю, что на самом деле это частный случай.
В этом конкретном случае вы можете уменьшить его до:
jq '.[][][].notificationURL' bundle.json
, который применяет операцию итератора трижды подряд, поскольку в объекте верхнего -уровня есть только одна ключевая «категория».