代码之家  ›  专栏  ›  技术社区  ›  Matt Oestreich

使用“sed”从JSON数组中删除所有元素

  •  0
  • Matt Oestreich  · 技术社区  · 4 年前

    我知道StackOverflow不是一个代码编写服务,但是 sed

    总之,我需要修改 .json

    文件的外观:

    {
    // ...
        "first": {
            "second": [
                "indexZero",
                "theseStringsAreDynamic",
                "soINeedToUseWildcard"
            ]
        }
    // ...
    }
    

    期望结果:

    {
    // ...
        "first": {
            "second": [
            ]
        }
    // ...
    }
    

    我尝试了大约一百万种变体,大致基于:

    sed -i 's/\"second\": \[.*\]/\"second\": []/' "my.json"
    
    ## ~ Which gives: ~
    #
    #    "first": {
    #        "second": []
    #            "indexZero",
    #            "theseStringsAreDynamic",
    #            "soINeedToUseWildcard"
    #        ]
    #    },
    

    实际上,我需要从 .json文件 文件,所以如果 不是做这项工作的正确工具,请告诉我。

    1 回复  |  直到 4 年前
        1
  •  1
  •   Shawn    4 年前

    正确的工具是 jq :

    $ jq '.first.second = []' input.json
    {
      "first": {
        "second": []
      }
    }
    

    jq '.first.second = []' orig.json > tmp.json && mv -f tmp.json orig.json