Json 如何仅输出带有键和值的正确结果?

Json 如何仅输出带有键和值的正确结果?,json,bash,jq,Json,Bash,Jq,我有一个json,如下所示: [ { "AvailabilityZone": "ap-northeast-1a", "Tags": [ { "Value": "value1", "Key": "key1" }, { "Value": "value2", "Key": "key2" } ], },

我有一个json,如下所示:

[
    {
      "AvailabilityZone": "ap-northeast-1a",
      "Tags": [
        {
          "Value": "value1",
          "Key": "key1"
        },
        {
          "Value": "value2",
          "Key": "key2"
        }
      ],
    },
    {
          "AvailabilityZone": "ap-northeast-1a",
          "Tags": [
            {
              "Value": "value3",
              "Key": "key3"
            },
            {
              "Value": "value4",
              "Key": "key4"
            }
          ],
        },
]
当我从键盘输入键和值时。我只想通过jq选项输出带有键和值的正确结果

示例:我输入的Key:value是key3:value3。我的愿望:

{
      "AvailabilityZone": "ap-northeast-1a",
      "Tags": [
        {
          "Value": "value3",
          "Key": "key3"
        },
        {
          "Value": "value4",
          "Key": "key4"
        }
      ],
}

您似乎正在使用aws cli获取ebs卷详细信息,您可以使用aws cli的筛选器属性筛选查询结果。
您可以在此处使用以下内容:
aws ec2描述卷--过滤器名称=标记键,Values=“key3”名称=标记值,Values=“value3”

有关更多帮助,请访问:
aws ec2描述卷帮助


我认为这比使用jq进行过滤要容易。

似乎您正在使用aws cli获取ebs卷详细信息,您可以使用aws cli的筛选器属性筛选查询结果。
您可以在此处使用以下内容:
aws ec2描述卷--过滤器名称=标记键,Values=“key3”名称=标记值,Values=“value3”

有关更多帮助,请访问:
aws ec2描述卷帮助


我认为这比使用jq进行过滤要容易。

使用select来过滤标记下的数组:

jq '.[].Tags | select((.[].Key == "key3") and (.[].Value="value3"))  ' < file.json
jq.[].Tags |选择([].Key==“key3”)和([].Value=“value3”)”
与从标准DIN读取键和值一起:

echo key3 value3 | (
    read key value
    k=$key v=$value jq ".[].Tags
        | select((.[].Key == env.k) and (.[].Value=env.v))
    " < file.json)
echo键3值3|(
读取键值
k=$key v=$value jq.“[].标记
|选择(([].Key==env.k)和([].Value=env.v))
“
使用select筛选标记下的数组:

jq '.[].Tags | select((.[].Key == "key3") and (.[].Value="value3"))  ' < file.json
jq.[].Tags |选择([].Key==“key3”)和([].Value=“value3”)”
与从标准DIN读取键和值一起:

echo key3 value3 | (
    read key value
    k=$key v=$value jq ".[].Tags
        | select((.[].Key == env.k) and (.[].Value=env.v))
    " < file.json)
echo键3值3|(
读取键值
k=$key v=$value jq.“[].标记
|选择(([].Key==env.k)和([].Value=env.v))
“
您能详细描述一下您期望的实际输出吗?请尽可能遵循指导原则。您希望如何“从键盘输入键和值”?“正确结果”是什么?你试过什么?@ParvezKazi我在aws有100卷(EBS)。每个卷(EBS),我标记了标签(包括键:值)。当我输入一个标签的正确键和值,然后输出该卷(EBS)的正确结果。您能详细描述一下您期望的实际输出吗?请尽可能遵循指导原则。您希望如何“从键盘输入键和值”?“正确结果”是什么?你试过什么?@ParvezKazi我在aws有100卷(EBS)。每个卷(EBS),我标记了标签(包括键:值)。当我输入标签的正确键和值时,然后输出该卷(EBS)的正确结果。