CSV格式的JQ查询输出

我一直在尝试使用jq从下面的json文件中提取一个csv,但到目前为止还无法实现。这里有专家可以帮忙吗?

{
  "values": [
    {
      "resourceId": "xxxx-xxxx-xxx-8b16-xxxxxx","property-contents": {
        "property-content": [
          { 
            "statKey": "config|name","timestamps": [
              1517591034069
            ],"values": [
              "somebname.UNIVERSE.test.com"
            ]
          },{ 
            "statKey": "summary|guest|ipAddress","values": [
              "100.xx.5.xx"
            ]
          },{ 
            "statKey": "summary|parentCluster","timestamps": [
              1551120506024
            ],"values": [
              "UFO-UFO"
            ]
          },{ 
            "statKey": "summary|parentDatacenter","timestamps": [
              1551120806021
            ],"values": [
              "GALAXY-D123"
            ]
          },{ 
            "statKey": "summary|parentVcenter","timestamps": [
              1517591334271
            ],"values": [
              "X-RAY123"
            ]
          },{ 
            "statKey": "summary|runtime|powerState","values": [
              "Powered On"
            ]
          }
        ]
      }
    },..
    ...

xxx-xxxx-xxx-8b16-xxxxxx,somebname.UNIVERSE.test.com,100.xx.5.xx,UFO-UFO,GALAXY-D123,X-RAY123,Powered On

预期o / p为:

xxx-xxxx-xxx-8b16-xxxxxx,Powered On
kaiyum88 回答:CSV格式的JQ查询输出

您的预期输出尚不清楚:

第二个CSV列包含somebname.UNIVERSE.test.com,该字段大概来自"property-content": [ { ...,"values": [ "somebname.UNIVERSE.test.com" ],... }部分。您如何确定要在"property-content"列表中的第二列中选择哪个元素?是因为这是第一个要素吗?是因为它的"statKey": "config|name"吗?

如果"property-content"列表为空怎么办?如果它没有要查找的"statKey"条目怎么办?如果"values"列表中包含零个或多个元素怎么办? CSV行只能包含一个标量值。此问题适用于后续专栏。

在这里疯狂猜测

$ jq -r '.values[] | [ .resourceId,(."property-contents"."property-content"[] | .values[]) ] | join(",")' your.json
xxxx-xxxx-xxx-8b16-xxxxxx,somebname.UNIVERSE.test.com,100.xx.5.xx,UFO-UFO,GALAXY-D123,X-RAY123,Powered On

我不能保证(并有些怀疑)这在一般情况下是可行的,但是我无法从您的一个示例中提取一般情况。

本文链接:https://www.f2er.com/3134783.html

大家都在问