使用 bash 的 Json 文件

使用 bash 的 Json 文件

我需要使用 bash 脚本从 json 文件中删除空间和值 kubernetes:

内容 json 文件

输入

 "spec": {
        "finalizers": [
            "kubernetes"
        ]
    },

输出

 "spec": {
        "finalizers": []
    },

答案1

给定“input.json”

{
  "spec": {
          "finalizers": [
              "kubernetes"
          ]
      },
  "other": 42
  }

然后

jq '.spec.finalizers = []' input.json

输出

{
  "spec": {
    "finalizers": []
  },
  "other": 42
}

答案2

让我们使用sed正则表达式的一些魔法:

echo 'Input "spec": { "finalizers": [ "kubernetes" ] },' | sed -r 's/Input (.* \[) \".*\" (\].*)/\1\2/'

返回:

"spec": { "finalizers": [] },

sed-r 使用扩展正则表达式(osx 上为 -E),“()”用于捕获组,这就是 \1 和 \2 所指的,因此我们首先捕获直到“[”的所有内容,然后匹配从“]”到结尾的所有内容。

这样做的缺点是您的输入看起来不像完整的 json,因此修改正则表达式以匹配正确的输入可能会困难得多。

我还建议您查看一下jqCLI 中用于 json 解析的事实工具。

相关内容