linux – 使用jq从json输出中获取键值

我有一个文件如下所示:
{
  "repositories": [
   {
    "id": "156c48fc-f208-43e8-a631-4d12deb89fa4","namespace": "rhel12","namespaceType": "organization","name": "rhel6.6","shortDescription": "","visibility": "public"
   },{
    "id": "f359b5d2-cb3a-4bb3-8aff-d879d51f1a04","name": "rhel7","visibility": "public"
   }
  ]
 }

我想在新行中只获取每个名称值,以便我可以在读取-r行时使用.
我只需要

rhel6.6 
rhel7

我使用jq如下似乎不起作用:

jq -r '.[].name'

请在这里建议正确使用jq

解决方法

您需要通过|组合过滤器操作符:
$jq -r '.[] | .[] | .name' test.json 
rhel6.6
rhel7

第一个.[]获取存储库数组.下一个.[]获取存储库数组的所有项.最后,.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常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...