【发布时间】:2019-09-10 03:37:22
【问题描述】:
我有以下包含此数组结构的 json 文件:
{
"outer": [
{
"inner": [
{
"value": "val1"
},
{
"value": "val3"
}
]
},
{
"inner": [
{
"value": "val2"
},
{
"value": "val1"
}
]
},
{
"inner": [
{
"value": "val2"
},
{
"value": "val1"
},
{
"value": "val3"
}
]
}
]
}
我想从outer 数组中删除inner 数组,该数组的元素具有特定值并且具有特定长度。例如,如果我想删除包含值 "val1" 和 "val2" 的 inner 数组,结果应该是:
{
"outer": [
{
"inner": [
{
"value": "val1"
},
{
"value": "val3"
}
]
},
{
"inner": [
{
"value": "val2"
},
{
"value": "val1"
},
{
"value": "val3"
}
]
}
]
}
我试过了
jq 'del( .outer[]|select(.inner[0].value == "val1"))'
但我不知道如何检查第二个条件,即长度,除此之外,这些值可能以任何顺序出现。
【问题讨论】:
-
键总是“外”、“内”和“值”?
-
@nautical:供您考虑,在您的询问中有一个用于 JSON 操作的 alternative 解决方案 - 基于
walk-pathunix 实用程序jtc(由我开发):<file.json jtc -pw'[value]:<val1>:[-2][value]:<val2>[-2]<>f[2]<>F'。如果您希望我在单独的答案中详细说明实用程序的用法,请告诉我。 -
@Dmitry 感谢您的提议,但我无权在系统上安装新软件。我被
jq困住了。