我有一个文件,如下所示:

{
  "repositories": [
   {
    "id": "156c48fc-f208-43e8-a631-4d12deb89fa4",
    "namespace": "rhel12",
    "namespaceType": "organization",
    "name": "rhel6.6",
    "shortDescription": "",
    "visibility": "public"
   },
   {
    "id": "f359b5d2-cb3a-4bb3-8aff-d879d51f1a04",
    "namespace": "rhel12",
    "namespaceType": "organization",
    "name": "rhel7",
    "shortDescription": "",
    "visibility": "public"
   }
  ]
 }

我只想在换行中使用每个名称值,以便可以使用while read -r line
我只需要
rhel6.6
rhel7

我正在使用jq如下所示似乎不起作用:
jq -r '.[].name'

请在这里建议正确使用jq

最佳答案

您需要通过|运算符组合过滤器:

$ jq -r '.[] | .[] | .name' test.json
rhel6.6
rhel7

第一个.[]获取repositories数组。下一个.[]获取repositories数组的所有项目。最后,.name从数组项目(对象)中提取属性。

注意,第一个.[]对对象有效,因为它是一个已记录的功能:
.[]
    If you use the .[index] syntax, but omit the index entirely, it
    will return all of the elements of an array...

    You can also use this on an object, and it will return all the
    values of the object.

关于linux - 使用jq从json输出中获取键值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39798542/

10-12 02:25