首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jq select,但保留父对象

jq select,但保留父对象
EN

Stack Overflow用户
提问于 2021-03-30 23:56:51
回答 1查看 76关注 0票数 1

这是为了搜索等同于“影响”的策略。但是,它只会拉出对象本身。jq '.techniques[] | select(.tactic == "impact")'

在使用像jq '. | select(.techniques[].tactic == "impact")'这样的东西遍历json时,没有办法使用select吗?我猜问题是这样的东西,即使它工作,仍然不会明确地说离开之前的项目。

手动重建父级是不可行的。

输入

代码语言:javascript
复制
{
  "viewMode": 0,
  "hideDisabled": false,
  "techniques": [
    {
      "name": "john",
      "tactic": "reconnaissance"
    },
    {
      "name": "jane",
      "tactic": "impact"
    },
    {
      "name": "jill",
      "tactic": "execution"
    }
  ],
  "karma": "yes"
}

期望输出

代码语言:javascript
复制
{
  "viewMode": 0,
  "hideDisabled": false,
  "techniques": [
    {
      "name": "jane",
      "tactic": "impact"
    }
  ],
  "karma": "yes"
}

如果这是补救性的,不需要回应,我会弄清楚并更新。这似乎是最基本的事情。我还将执行!=,这也可以正常工作,但不能捕获整个正文。

我尝试过使用变量来做这件事,这让我更接近;

代码语言:javascript
复制
jq  '{techniques: [.techniques[] | select(.tactic == "impact")]} as $a| $a'  test.json

然而,试图给数组添加一个关键“技术”会毁掉我使用它的能力;

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-31 00:15:14

|=是你的朋友。

代码语言:javascript
复制
.techniques |= map(select(.tactic == "impact"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66874366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档