Linux

JQ(根據 NAME 獲取 ID)

  • May 14, 2021

我得到了一長串這樣的數組

{
   "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
 }

我只想通過 JQ 獲取名稱為 BMA 的 ID。目前我解析“ jq -r ”。

$$ $$$$ “name” $$" 我可以按名稱過濾 curl 的輸出,我會得到 “BMA” 以及其他 100 個名稱,但我只需要過濾名稱為 =BMA 的 ID。有什麼想法嗎?

jq

您應該能夠通過以下方式完成此操作:

jq '.[] | select( .name == "BMA" ).id'

如果 name 是BMA它將提取並輸出相應的.id.

要使用 shell 變數的值,請將其導入jqwith --arg

myvariable=BMA
jq --arg name "$myvariable" '.[] | select( .name == $name ).id'

json

json -c 'this.name === "BMA"' -a id

jq 解決方案的替代方案是*jtc*:

bash $ jtc -w'[name]:<BMA>+0 [-1] [id]' input.json
"byu6g6c4cjys5mdkg5znh8ju8c"
bash $ 

引用自:https://unix.stackexchange.com/questions/484980