gpt4 book ai didi

json - 在 bash 中将 json 解析为数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:44 29 4
gpt4 key购买 nike

{
"db_status": {
"sysa": {
"taskname": "AB",
"state": "Running",
"status": "System ATTENTION",
"updated": "0727",
"version": "5"
},

"sysb": {
"taskname": "null",
"state": "Standby",
"status": "System OK",
"updated": "0727",
"version": "6"
}
}
}

CURL 命令返回 json 对象。试图在数组中获取两个状态变量,即运行和待机。到目前为止,我已经尝试过了

curl -s http://localhost:9099/api | grep state | sed 's/"//g' | awk -F  ": " '/state/ {print $2}' | tr '\n' ' ' |  sed s'/..$//'

最佳答案

仅供引用,当您使用 awk 时,您不需要包含 20 个不同命令的管道。您提供的命令行可以写成一个命令:

awk -F'"' '$2=="state"{printf "%s%s", (++c>1?", ":""),$4}'

但你真正需要的是:

awk -F'"' '$2=="state"{print $4}'

并将输出保存在 shell 数组中(假设您的 json 实际上总是按照您在问题中显示的那样格式化)将是:

$ arr=( $(cat file | awk -F'"' '$2=="state"{print $4}') )
$ echo "${arr[0]}"
Running
$ echo "${arr[1]}"
Standby

用您的curl 命令替换cat 文件

关于json - 在 bash 中将 json 解析为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45364272/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com