JQ(基于 NAME 的 GET ID)

Who*_*AmI 2 linux javascript json jq

我得到一长串这样的数组

{
    "id": "byu6g6c4cjys5mdkg5znh8ju8c",
    "create_at": 1511875272294,
    "update_at": 1511875272294,
    "delete_at": 0,
    "display_name": "BMA",
    "name": "BMA",
    "description": "",
    "email": "aleksandar.ivanov@random.com",
    "type": "O",
    "company_name": "",
    "allowed_domains": "",
    "invite_id": "gdgz1tbxuinntx1fbr1ax7kehy",
    "allow_open_invite": false,
    "scheme_id": null
  }
Run Code Online (Sandbox Code Playgroud)

我只想通过 JQ 获取名称为 BMA 的 ID。目前我解析“ jq -r '.[][“name”]”,我可以按名称过滤 curl 的输出,我会得到“BMA”和其他 100 个名称,但我只需要过滤 ID其中名称是 =BMA。有任何想法吗?

jes*_*e_b 5

知乎

您应该能够通过以下方式完成此操作:

jq '.[] | select( .name == "BMA" ).id'
Run Code Online (Sandbox Code Playgroud)

如果 name 是BMA,它将提取并输出相应的.id.

要使用shell变量的值,将其导入jq具有--arg

myvariable=BMA
jq --arg name "$myvariable" '.[] | select( .name == $name ).id'
Run Code Online (Sandbox Code Playgroud)

json

json -c 'this.name === "BMA"' -a id
Run Code Online (Sandbox Code Playgroud)