免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1898 | 回复: 16

[文本处理] 【已经解决、真诚的谢谢各位】json格式取值,多年没有搞了现在不知道咋搞了,拜求.... [复制链接]

论坛徽章:
0
发表于 2017-04-12 16:13 |显示全部楼层
本帖最后由 mir620 于 2017-04-25 10:02 编辑

文件内容如下:
[
  {
    "id": "1a313",
    "type": "project",
    "links": {
      "self": "http://192.168.1.88:8090/v1/projects/1a313",
      "agents": "http://192.168.1.88:8090/v1/projects/1a313/agents",
      "auditLogs": "http://192.168.1.88:8090/v1/projects/1a313/auditlogs",
      "typeDocumentations": "http://192.168.1.88:8090/v1/projects/1a313/typedocumentations",
      "virtualMachines": "http://192.168.1.88:8090/v1/projects/1a313/virtualmachines",
      "hostStats": "http://192.168.1.88:8090/v1/projects/1a313/projects/1a313/hoststats"
    },
    "actions": {
      "update": "http://192.168.1.88:8090/v1/projects/1a313/?action=update",
      "deactivate": "http://192.168.1.88:8090/v1/projects/1a313/?action=deactivate",
      "setmembers": "http://192.168.1.88:8090/v1/projects/1a313/?action=setmembers",
      "delete": "http://192.168.1.88:8090/v1/projects/1a313/?action=delete"
    },
    "baseType": "account",
    "name": "tools",
    "state": "active",
    "allowSystemRole": false,
    "created": "2017-03-07T08:00:16Z",
    "createdTS": 1488873616000,
    "data": {
      "fields": {
        "virtualMachine": false,
        "orchestration": "cattle",
        "allowSystemRole": false,
        "members": [
          {
            "externalId": "1a1",
            "externalIdType": "rancher_id",
            "role": "owner"
          }
        ],
        "servicesPortRange": {
          "endPort": 65535,
          "startPort": 49153
        },
        "createdStackIds": [
          76,
          77,
          78,
          79
        ]
      }
    },
    "description": "机房内网外所需的工具软件,负责人:董朝军",
    "kind": "project",
    "kubernetes": false,
    "members": [
      {
        "type": "projectMember",
        "externalId": "1a1",
        "externalIdType": "rancher_id",
        "role": "owner"
      }
    ],
    "mesos": false,
    "publicDns": false,
    "removeTime": null,
    "removed": null,
    "servicesPortRange": {
      "type": "servicesPortRange",
      "endPort": 65535,
      "startPort": 49153
    },
    "swarm": false,
    "transitioning": "no",
    "transitioningMessage": null,
    "transitioningProgress": null,
    "uuid": "657c0658-8ace-4abd-805b-e8b4da3f1c57",
    "virtualMachine": false
  },
  {
    "id": "1a1150",
    "type": "project",
    "links": {
      "self": "http://192.168.1.88:8090/v1/projects/1a1150",
      "agents": "http://192.168.1.88:8090/v1/projects/1a1150/agents"
      "hostStats": "http://192.168.1.88:8090/v1/projects/1a1150/projects/1a1150/hoststats"
    },
    "actions": {
      "update": "http://192.168.1.88:8090/v1/projects/1a1150/?action=update",
      "deactivate": "http://192.168.1.88:8090/v1/projects/1a1150/?action=deactivate",
      "setmembers": "http://192.168.1.88:8090/v1/projects/1a1150/?action=setmembers",
      "delete": "http://192.168.1.88:8090/v1/projects/1a1150/?action=delete"
    },
    "baseType": "account",
    "name": "build-test",
    "state": "active",
    "allowSystemRole": false,
    "created": "2017-04-08T02:01:33Z",
    "createdTS": 1491616893000,
    "data": {
      "fields": {
        "virtualMachine": false,
        "orchestration": "cattle",
        "allowSystemRole": false,
        "members": [
          {
            "externalId": "1a276",
            "externalIdType": "rancher_id",
            "role": "owner"
          }
        ],
        "servicesPortRange": {
          "endPort": 65535,
          "startPort": 49153
        },
        "createdStackIds": [
          237,
          238,
          239,
          240
        ],
        "startedStackIds": [
          237,
          238,
          239,
          240
        ]
      }
    },
    "description": "云平台版本验证",
    "kind": "project",
    "kubernetes": false,
    "members": [
      {
        "type": "projectMember",
        "externalId": "1a276",
        "externalIdType": "rancher_id",
        "role": "owner"
      }
    ],
    "mesos": false,
    "publicDns": false,
    "removeTime": null,
    "removed": null,
    "servicesPortRange": {
      "type": "servicesPortRange",
      "endPort": 65535,
      "startPort": 49153
    },
    "swarm": false,
    "transitioning": "no",
    "transitioningMessage": null,
    "transitioningProgress": null,
    "uuid": "8ea508bc-b068-469e-ab23-cf1889f07a26",
    "virtualMachine": false
  }
]





目前上面的内容包含2个环境一个  test 和一个build-test环境,  现在已经知道    "uuid": "8ea508bc-b068-469e-ab23-cf1889f07a26",   如何可以取到到  "name": "build-test",      说白了就是如何根据“8ea508bc-b068-469e-ab23-cf1889f07a26”取到“build-test”           现网的环境可能更多  目前这个只列举2个环境的数据出来



论坛徽章:
0
发表于 2017-04-12 16:27 |显示全部楼层
自己顶顶,有会的吗,大神们

论坛徽章:
0
发表于 2017-04-12 16:33 |显示全部楼层
自己现在是这样写得赶紧好麻烦

    # get the list count
    proj_data_list_count=`echo "$proj_data" | jq '. | length'`
   
    # loop to search the key
    for ((m=0; m<=$[proj_data_list_count - 1]; m++)); do
   
        if echo "$proj_data" | jq .[$m] | grep -wq $env_uuid; then
            proj_name=`echo "${proj_data}" | jq .[$m].name | xargs`
            break
        fi
    done

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2017-04-12 17:02 |显示全部楼层
回复 3# mir620

$ awk -vuuid="8ea508bc-b068-469e-ab23-cf1889f07a26" 'function x(s){gsub("[\", ]","",s);return(s)}/"name":/{name=x($2)}/"uuid":/{if(x($2)==x(uuid))print name}' xml
build-test

论坛徽章:
0
发表于 2017-04-12 17:14 |显示全部楼层
回复 4# jason680

牛逼  不过,组内的人不是很赞同,因为不好维护,如果后续变更的话来一个新人估计要晕菜了,其实我也看不懂,哈哈  不过还是谢谢大神

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
发表于 2017-04-12 17:24 |显示全部楼层
  1. awk -F'"' -vu="8ea508bc-b068-469e-ab23-cf1889f07a26" '/name/{a[c++]=$4}/uuid/{b[d++]=$4}END{for(f in b)if(b[f]==u)print a[f]}'
复制代码


看起来像是 docker

docker inspect -f 这个可以?

论坛徽章:
0
发表于 2017-04-12 17:36 |显示全部楼层
回复 6# haooooaaa

不可以,你这个是看容器的信息的

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2017-04-12 20:50 |显示全部楼层
回复 5# mir620

$ jq '.[] | select(.uuid=="8ea508bc-b068-469e-ab23-cf1889f07a26") | .name'   a.json
"build-test"

论坛徽章:
0
发表于 2017-04-13 01:36 |显示全部楼层
用python 的 list comprehensive 比较灵活:
python -c 'import json
> with open("json.txt") as jsond:
>     d=json.load(jsond)
>     t=[ item["name"] for item in d if item["uuid"]=="8ea508bc-b068-469e-ab23-cf1889f07a26"]
>     print(t[0])
> '
build-test

论坛徽章:
0
发表于 2017-04-13 01:38 |显示全部楼层

python -c 'import json
> with open("json.txt") as jsond:
>     d=json.load(jsond)
>     t=[ item["name"] for item in d if item["uuid"]=="8ea508bc-b068-469e-ab23-cf1889f07a26"]
>     print(t[0])
> '
build-test

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP