else in jqが期待した出力を提供しない場合

else in 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"
  }
]

試験を終えた:

jq 'if .[].realm == "internal" then .[].name else empty end'

しかし、問題はすべてのユーザーを一覧表示することです。

予想出力:

A_A , B_B

ベストアンサー1

jq関数を使用できますselect

<file jq -r '.[] | select(.realm == "internal") | .name'

最初は.[]配列要素を取得します。select()正しい要素を含む個々の要素とフィルタに適用されますrealm。最後の部分はnameフィールドを印刷します。

おすすめ記事