這可能不是解決此問題的理想方法,但我正在批量更新一些 Grafana 儀表板。當 expr 鍵包含包含類似“sum((rate”) 之類的值時,我想將另一個字串附加到該值。這甚至可能嗎?
if (.dashboard.panels[].targets[].expr | contains("sum((rate")) then . = "TEST" end'
我嘗試了一些 then 操作的變體,甚至洗掉了連接,看看我是否可以得到簡單的替換。但是得到
jq: error: syntax error, unexpected end (Unix shell quoting issues?) at <top-level>, line 1:
uj5u.com熱心網友回復:
您應該能夠更新分配部分物件:
.dashboard.panels[].targets[].expr |= if contains("sum((rate") then . "TEST" else . end
也可以不使用if
條件,首先選擇所有有趣的路徑,然后只修改它們:
(.dashboard.panels[].targets[].expr | select(contains("sum((rate"))) = "TEST"
uj5u.com熱心網友回復:
你總是需要一個else
分支。為了可讀性,您還可以將目標拉到前面(否則.
將匹配先前的背景關系)。
.dashboard.panels[].targets[].expr |=
if contains("sum((rate") then . "TEST" else . end
演示
.dashboard.panels[].targets[].expr |= .
if contains("sum((rate") then "TEST" else "" end
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/485486.html