如果 jq 中的 else 没有给出预期的输出

Sug*_*S N 4 jq

如果他们的领域是内部的,我需要显示用户。

输入:

[
  {
    "name": "A_A",
    "uri": "https:test/test",
    "realm": "internal"
  },
  {
    "name": "B_B",
    "uri": "https:test/test",
    "realm": "internal"
  },
  {
    "name": "C_C",
    "uri": "https:test/test",
    "realm": "external"
  }
]
Run Code Online (Sandbox Code Playgroud)

尝试过:

jq 'if .[].realm == "internal" then .[].name else empty end'
Run Code Online (Sandbox Code Playgroud)

但问题是它列出了所有用户。

预期输出:

A_A , B_B
Run Code Online (Sandbox Code Playgroud)

oli*_*liv 16

您可以使用 jq 函数select

<file jq -r '.[] | select(.realm == "internal") | .name'
Run Code Online (Sandbox Code Playgroud)

第一个.[]获取数组元素。在select()适用于个别元素和过滤的那些有正确的realm。最后一部分打印name字段。