[英]How to Parse / substitute value in jq for json file
如何解析/替換 jquery 中的值。
json文件如下:
{
"09800214851900C3": {
"label": "P7-R1-R16:S2",
"name": "Geist Upgradable rPDU",
"state": "normal",
"order": 0,
"type": "i03",
"snmpInstance": 1,
"lifetimeEnergy": "20155338",
"outlet": {},
"alarm": {
"severity": "",
"state": "none"
},
"layout": {
"0": [
"entity/total0",
"entity/phase0",
"entity/phase1",
"entity/phase2"
]
}
}
}
我想像下面那樣做,但這不起作用。 對此的任何想法/線索將不勝感激。
a=09800214851900C3
jsonfile.json | jq '.${a}.label'
您當前的嘗試存在以下問題:
jsonfile.json
不是命令,因此您不能將其用作命令行的第一個標記。 你可以cat jsonfile.json | jq ...
cat jsonfile.json | jq ...
,但讓jq
處理文件的首選方法是使用jq 'command' file
您在 shell 中定義了一個變量a
,但您嘗試在單引號字符串中引用它,這會阻止 shell 將其擴展為實際值。 基於 shell 的解決方案是使用雙引號來擴展變量,但最好使用--arg varname value
選項在jq
本身的上下文中定義變量
09800214851900C3
不被jq
視為“簡單的、類似標識符的鍵”(因為它以數字開頭),因此訪問與此鍵關聯的值 ( .key
) 的標准方法不起作用,您需要使用."09800214851900C3"
或.["09800214851900C3"]
代替
總之,我相信您會想要使用以下命令:
jq --arg a 09800214851900C3 '.[$a].label' jsonfile.json
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.