jq: выводит массив объектов json в массив ключей с объектами - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь переформатировать некоторые json, используя jq вместо Python.У меня есть следующий массив объектов JSON.Я хочу изменить это на массив ключей.Значения ключей должны быть объектом.

[{
        "repo_expire": "21,600 second(s) (last: Tue Nov 20 07:14:05 2018)",
        "repo_url": "http://repos.blah.com/CentOS/dev/6/os/x86_64/",
        "repo_tstsync": 0,
        "repo_id": "base",
        "repo_pkgs": "6,713",
        "repo_prdsync": 0,
        "repo_revision": 1530286202,
        "repo_name": "CentOS-6 - Base",
        "repo_size": "5.5 G",
        "repo_updated": "Fri Jun 29 08:37:23 2018"
    },
    {
        "repo_expire": "21,600 second(s) (last: Tue Nov 20 07:36:50 2018)",
        "repo_url": "http://blah.com/epel/dev/6/x86_64/",
        "repo_tstsync": 0,
        "repo_id": "epel",
        "repo_pkgs": "12,448",
        "repo_prdsync": 699,
        "repo_revision": 1542329363,
        "repo_name": "Extra Packages for Enterprise Linux 6 - x86_64",
        "repo_size": "11 G",
        "repo_updated": "Thu Nov 15 17:50:18 2018"
    },
    {
        "repo_expire": "21,600 second(s) (last: Tue Nov 20 07:44:05 2018)",
        "repo_url": "http://blah.com/CentOS/dev/6/extras/x86_64/",
        "repo_tstsync": "null",
        "repo_id": "extras",
        "repo_pkgs": 33,
        "repo_prdsync": "null",
        "repo_revision": 1537445728,
        "repo_name": "CentOS-6 - Extras",
        "repo_size": "12 M",
        "repo_updated": "Thu Sep 20 05:15:29 2018"
    }
]

Ниже приводится желаемый результат.

{
    "repos": [{
        "CentOS-6 - Base": {
            "repo_expire": "21,600 second(s) (last: Tue Nov 20 01:14:05 2018)",
            "repo_url": "http://blah.com/CentOS/dev/6/os/x86_64/",
            "repo_tstsync": 0,
            "repo_id": "base",
            "repo_pkgs": "6,713",
            "repo_prdsync": 0,
            "repo_revision": 1530286202,
            "repo_size": "5.5 G",
            "repo_updated": "Fri Jun 29 08:37:23 2018"
        },
        "Extra Packages for Enterprise Linux 6 - x86_64": {
            "repo_expire": "21,600 second(s) (last: Tue Nov 20 01:36:50 2018)",
            "repo_url": "http://blah.com/epel/dev/6/x86_64/",
            "repo_tstsync": 0,
            "repo_id": "epel",
            "repo_pkgs": "12,448",
            "repo_prdsync": 699,
            "repo_revision": 1542329363,
            "repo_size": "11 G",
            "repo_updated": "Thu Nov 15 17:50:18 2018"
        },
        "CentOS-6 - Extras": {
            "repo_expire": "21,600 second(s) (last: Tue Nov 20 01:44:05 2018)",
            "repo_url": "http://blah.com/CentOS/dev/6/extras/x86_64/",
            "repo_tstsync": "null",
            "repo_id": "extras",
            "repo_pkgs": 33,
            "repo_prdsync": "null",
            "repo_revision": 1537445728,
            "repo_size": "12 M",
            "repo_updated": "Thu Sep 20 05:15:29 2018"
        }
    }]
}

Мне нужно получить значение ключа repo_name из каждого объектакак-то.Это возможно?

1 Ответ

0 голосов
/ 20 ноября 2018

Следующий фильтр выдает результаты в нужном формате, но вывод, помеченный в Q как «требуемый», не совсем соответствует заданному вводу, который я принимаю за недосмотр.

{repos: map( {(.repo_name): del(.repo_name)} )}
...