首页 > 解决方案 > awk 从键值对打印一个值

问题描述

我有以下 json 并使用 awk 打印并发值,但它没有给出任何输出

{
    "GlanceImages.list_images": [
        {
            "runner": {
                "type": "constant",
                "times": 10,
                "concurrency": 1
            },
            "context": {
                "users": {
                    "tenants": 2,
                    "users_per_tenant": 2
                },
                "images": {
                    "image_url": "http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img",
                    "disk_format": "qcow2",
                    "container_format": "bare",
                    "images_per_tenant": 4
                }
            },
            "sla": {
                "failure_rate": {
                    "max": 0
                }
            }
        }
    ]
}

使用 awk

echo xyz.json | awk -F: '$1=="concurrency" {print $2}'

它没有给出任何输出,可能是什么问题。最终我必须读取多个文件并总结所有并发值,最后打印最终总和

标签: awksed

解决方案


另一个脆弱的脚本

$ awk '$1=="\"concurrency\":"{print $2}' file

如果您有多个匹配项要聚合

$ awk '$1=="\"concurrency\":"{sum+=$2} END{print sum}' file

推荐阅读