我有 json 檔案作為 sample.json
[
{
"id": "1",
"name": "default",
},
{
"id": "2",
"name": "name2",
},
{
"id": "3",
"name": "name3",
}
]
另一個 YAML 檔案(target.yaml)
-
name: default
webhookurl: "http://localost:9091/te"
-
name: default1
webhookurl: "http://localost:9091/tee"
我想從 YAML 檔案中獲取最終結果,并對sample.json檔案中的資料執行包含操作。我嘗試了以下方式
yq e '. | .[].name | contains("default","default1")' sample.json
這給出的結果如下:- 注意:sample.json 只是在影像中指的是 myref.txt

另一種嘗試的方法是
myarr=$(yq e '. | .[].name ' target.yaml)# 將陣列放入myarr變數
中yq e '. | .[].name | contains(myarr)' sample.json# 這行不通
yq e '. | .[].name | contains(env(myarr))' sample.json # 這也行不通
預期結果應該是
default -> True
default1 -> false
uj5u.com熱心網友回復:
給定這兩個檔案并使用kislyuk/yq這將起作用:
yq -y '(input | map(.name)) as $names | map(.name as $name | {($name): any($names[]; . == $name)})' target.yaml sample.json
- default: true
- default1: false
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/496513.html
上一篇:需要從子域中洗掉域域
