【问题标题】:How to remove a block of. code from a json using jq?如何删除一个块。使用 jq 的 json 代码?
【发布时间】:2021-06-04 01:45:02
【问题描述】:

我有一个这样的 json 文件 temp.json -

{
  "data": {
    "stuff": [
    .....
    ]
  },
  "time": {
    "metrics": 83
  }
}

我想从上面的 json 文件中删除这个特定的代码块 -

,
"time": {
  "metrics": 83
}

删除后我想在同一个文件中重写新的json,这样同一个文件中的新内容将是-

{
  "data": {
    "stuff": [
    .....
    ]
  }
}

这有可能吗?

注意:数字83一般可以是任意数字。

【问题讨论】:

  • 这是一篇关于in-place editing 的非常好的论文。我个人使用那篇文章中提供的sponge 的 Perl 实现。

标签: json linux bash key jq


【解决方案1】:

这里有一个很棒的教程:Baeldung: Guide to Linux jq Command for JSON Processing

也许你可以试试这样:jq 'del(.time)' temp.json > temp2.json

注意 jq 在语义级别工作;这不仅仅是“文本替换”。因此,当您使用 jq 删除对象时,对象之间的“逗号”分隔符之类的内容将从 JSON 文本中删除。

进行实验,看看哪种方法最适合您的特定场景。

【讨论】:

  • 感谢您的链接,但是time 之前的逗号呢?
  • 查看我的更新。更重要的是 - 尝试一下。你会看到:) 最重要的是:阅读文章,尝试一些示例,并尝试不同的选择。请把你找到的东西发回:)'希望能有所帮助......至少有点。
猜你喜欢
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
相关资源
最近更新 更多