我有一个文件,看起来如下:
{
"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
3条答案
按热度按时间ryoqjall1#
您需要通过
|
运算符合并过滤器:第一个
.[]
获取repositories
数组。下一个.[]
获取repositories
数组的所有项。最后,.name
从数组项(对象)中提取属性。注意,第一个
.[]
可以在object上运行,因为它是一个已记录的功能:ercv8c1e2#
您希望查看存储库数组,而不是将输入视为数组:
kgsdhlau3#
这是另一个解决方案。假设要求
我只想得到name值,每个值都在一个新行中,这样我就可以在读取-r行时使用。
您能告诉我怎样才能得到rhel 12/rhel6.6格式输出吗换句话说,我需要命名空间/名称格式o/p
如果数据在
data.json
中,则命令应产生