加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 在shell中逐列解析Json数据

发布时间:2020-12-15 18:57:59 所属栏目:安全 来源:网络整理
导读:当我运行命令时,我得到这样的响应 { "status": "available","managed": true,"name":vdisk7,"support":{ "status": "supported" },"storage_pool": "pfm9253_pfm9254_new","id": "ff10abad"-2bf-4ef3-9038-9ae7f18ea77c","size":100}, 以及数百种此类列表或
当我运行命令时,我得到这样的响应
{

    "status": "available","managed": true,"name":vdisk7,"support":{
    "status": "supported"
    },"storage_pool": "pfm9253_pfm9254_new","id": "ff10abad"-2bf-4ef3-9038-9ae7f18ea77c","size":100
},

以及数百种此类列表或词典
我想要一个做这种事情的命令

if name = "something",get the id

任何可以帮助我学习这类命令的链接都将受到高度赞赏

我努力了

awk'{if($2 ==“something”)打印$0;}’

但我认为响应是在Json中,因此colum明智的awk格式化不起作用.

此外,它只是我需要运行的一个命令,所以我不想使用任何外部库.

JSON解析器更适合此任务

awk和sed是解析面向行的文本的实用程序,但不是json.如果你的json格式会改变怎么办? (有些线会在一条线上吗?).

你应该使用任何标准的json解析器.或者使用一些强大的脚本语言,例如PHP,Python,Ruby等.

我可以为您提供有关如何使用python执行此操作的示例.

如果我不能使用强大的脚本语言怎么办?

如果你完全不能使用python,那么有实用程序jq:link

如果你有一些最近的发行版,jq可能已经在存储库中(例如:Ubuntu 13.10在repos中有它).

我可以用python!

我会使用简单的python内联脚本来做到这一点.

例如,我们有一些some_command作为结果返回json.

我们必须得到数据的价值[“名称”].

开始了:

some_command | python -c "import json,sys; print json.load(sys.stdin)['name']"

它会在你的情况下输出vdisk7

为此,你需要确定,json是完全有效的.

如果你有一个json对象列表:

[
  {
    ...
    "name": "vdisk17"
    ...
  },{
    ...
    "name": "vdisk18"
    ...
  },{
    ...
    "name": "vdisk19"
    ...
  },...
]

您可以使用一些列表推导:

some_command | python -c "import json,sys; [sys.stdout.write(x['name'] + 'n') for x in json.load(sys.stdin)]"

它将输出:

vdisk17
vdisk18
vdisk19

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读