小编cri*_*ret的帖子

使用 JQ 从 JSON 中选择特定的、任意嵌套的对象

我正在寻找有效的方法来搜索与过滤器匹配的“子对象”的大型 JSON 对象(select()我想是通过)。然而,顶级 JSON 是一个包含任意嵌套的对象,包括更简单的值、对象和对象数组。例如:

{
  "name": "foo",
  "class": "system",
  "description": "top-level-thing",
  "configuration": {
    "status": "normal",
    "uuid": "id"
  },
  "children": [
    {
      "id": "c1",
      "class": "c1",
      "children": [
        {
          "id": "c1.1",
          "class": "c1.1"
        },
        {
          "id": "c1.1",
          "class": "FINDME"
        }
      ]
    },
    {
      "id": "c2",
      "class": "FINDME"
    }
  ],
  "thing": {
    "id": "c3",
    "class": "FINDME"
  }
}    
Run Code Online (Sandbox Code Playgroud)

我有一个解决方案,它确实的一部分我想要的(并且是可以理解的):

jq -r '.. | arrays | .[] | select(.class=="FINDME"?) | .id'
Run Code Online (Sandbox Code Playgroud)

返回:

c2
c1.1
Run Code Online (Sandbox Code Playgroud)

...然而,它错过了c3,而且它改变了项目输出的顺序。此外,我希望这可以在可能非常大的 JSON …

select json nested object jq

7
推荐指数
2
解决办法
3545
查看次数

从所有 GitLab 项目(我拥有的)中查找(并删除)成员

有没有办法搜索特定用户的所有 GitLab 组和相关项目(我拥有或管理的)(目的是删除该用户)?我知道如果他们是组本身的成员如何,但是如果组中有很多项目并且有些项目有单独添加的用户,那么逐一搜索每个项目很乏味。

gitlab

6
推荐指数
2
解决办法
1807
查看次数

仅当未指定标签时才运行 ansible 任务

假设我只想在特定标签不在命令行提供的标签列表中时运行任务,即使指定了其他标签。其中,只有最后一个在所有情况下都能按我的预期工作:

- hosts: all
  tasks:
    - debug:
        msg: 'not TAG (won't work if other tags specified)'
      tags: not TAG

    - debug:
        msg: 'always, but not if TAG specified (doesn't work; always runs)'
      tags: always,not TAG

    - debug:
        msg: 'ALWAYS, but not if TAG in ansible_run_tags'
      when: "'TAG' not in ansible_run_tags"
      tags: always
Run Code Online (Sandbox Code Playgroud)

尝试使用不同的 CLI 选项,你会希望看到为什么我觉得这有点令人困惑:

ansible-playbook tags-test.yml -l HOST
ansible-playbook tags-test.yml -l HOST -t TAG
ansible-playbook tags-test.yml -l HOST -t OTHERTAG
Run Code Online (Sandbox Code Playgroud)

问题:(a) 这是预期的行为吗?(b) 有没有更好的方法或我遗漏的一些逻辑?

我很惊讶我不得不深入研究 (undocumented, AFAICT) 变量 …

tags ansible

5
推荐指数
1
解决办法
5225
查看次数

标签 统计

ansible ×1

gitlab ×1

jq ×1

json ×1

nested ×1

object ×1

select ×1

tags ×1