【发布时间】:2021-03-30 15:56:51
【问题描述】:
这适用于搜索等于“影响”的策略。但是,它只会拉动对象本身。
jq '.techniques[] | select(.tactic == "impact")'
在使用jq '. | select(.techniques[].tactic == "impact")' 之类的json 遍历时,是否无法使用select?我猜问题是这样的事情,即使它有效,仍然没有明确说要保留以前的项目。
手动重建父级是不可行的。
输入
{
"viewMode": 0,
"hideDisabled": false,
"techniques": [
{
"name": "john",
"tactic": "reconnaissance"
},
{
"name": "jane",
"tactic": "impact"
},
{
"name": "jill",
"tactic": "execution"
}
],
"karma": "yes"
}
想要的输出
{
"viewMode": 0,
"hideDisabled": false,
"techniques": [
{
"name": "jane",
"tactic": "impact"
}
],
"karma": "yes"
}
如果这是一种补救措施,以至于无法得到回应,我会弄清楚并更新。这似乎是最基本的东西。我还会做一个 !=,它也可以正常工作,但不会捕获整个身体。
我尝试过使用变量来做到这一点,这让我很接近;
jq '{techniques: [.techniques[] | select(.tactic == "impact")]} as $a| $a' test.json
但是,尝试向该数组添加关键“技术”会破坏我使用它的能力;
jq '{techniques: [.techniques[] | select(.tactic == "impact")]} as $a| $a + [.]' test.json
jq: error (at test.json:19): object ({"technique...) and array ([{"viewMode...) cannot be added
【问题讨论】: