簡體   English   中英

使用jq從其他數組派生一個數組(請參閱Python列表推導)

[英]Deriving an array from other arrays with jq (cf. Python list comprehensions)

給定以下json,其中包含兩個數組:

{"zones":["dev01","dev02","dev03","dev04","dev05","dev06","dev07","dev08","dev09","dev10","dev11","dev12","dev13","dev14","dev15","dev16","dev17","dev18","dev19","dev20"],"disabled_zones":["dev01","dev05","dev06","dev08","dev10","dev11","dev12","dev13","dev14","dev15","dev16","dev17","dev18","dev19","dev20"]}

我希望派生第三個數組,其中包含在第一個數組中出現但不在第二個數組中的項:

{"enabled_zones":["dev02","dev03","dev04","dev07","dev09"]}

我想使用jq完成此任務

在python中,我將使用列表推導來實現此目的:

>>> zones = ["dev01","dev02","dev03","dev04","dev05","dev06","dev07","dev08","dev09","dev10","dev11","dev12","dev13","dev14","dev15","dev16","dev17","dev18","dev19","dev20"]
>>> disabled_zones = ["dev01","dev05","dev06","dev08","dev10","dev11","dev12","dev13","dev14","dev15","dev16","dev17","dev18","dev19","dev20"]
>>> enabled_zones = [x for x in zones if x not in disabled_zones]
>>> print(enabled_zones)
['dev02', 'dev03', 'dev04', 'dev07', 'dev09']

我目前正在嘗試使用foreach array1中的項目,並使用in檢查它們是否存在於array2中in但是我在語法上苦苦掙扎。

我如何使用jq實現呢?

jq手冊

除了對數字進行常規算術減法外,-運算符還可用於數組,以從第一個數組中刪除所有出現的第二個數組元素。

這會做:

jq '{ "enabled_zones": (.zones - .disabled_zones) }' data.json

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM