![使用 bash 的 Json 文件](https://linux22.com/image/763398/%E4%BD%BF%E7%94%A8%20bash%20%E7%9A%84%20Json%20%E6%96%87%E4%BB%B6.png)
我需要使用 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,因此修改正则表达式以匹配正确的输入可能会困难得多。
我还建议您查看一下jq
CLI 中用于 json 解析的事实工具。