我需要使用嵌套的strucutre过滤JSON,如下所示。 数组b中属性x在x的值中包含“ z”的所有对象应被过滤掉。其余应保留在文件中。
{
"a": {
"b": [
{
"c": "1",
"x": "aaa",
},
{
"c": "2",
"x": "aza",
},
{
"c": "7",
"x": "azb",
}
]
},
"d": {
"e": [
"1"
],
"f": [
"2"
]
}
}
预期输出:
{
"a": {
"b": [
{
"c": "1",
"x": "aaa"
}
]
},
"d": {
"e": [
"1"
],
"f": [
"2"
]
}
}
答案 0 :(得分:1)
将select
与contains
一起使用:
jq '.a.b|=[.[]|select(.x|contains("z")|not)]' file
答案 1 :(得分:0)
或者,您可以考虑使用基于步行路径的Unix实用程序 jtc
:
bash $ <file.json jtc -w'[a][b][x]:<z>R:[-1]' -p
{
"a": {
"b": [
{
"c": "1",
"x": "aaa"
}
]
},
"d": {
"e": [
"1"
],
"f": [
"2"
]
}
}
bash $