json - 如何简化一个jq句子?
问题描述
我有这个文件 test.json
"items" : [ {
"name" : "kudu-KUDU_TSERVER-2d63fec551a74320fdcc0c65007c76e4",
"type" : "KUDU_TSERVER",
"serviceRef" : {
"clusterName" : "cluster",
"serviceName" : "kudu"
},
"entityStatus" : "GOOD_HEALTH"
}, {
"name" : "kudu-KUDU_MASTER-95ebd4d9a5158d59306372ed306993fe",
"type" : "KUDU_MASTER",
"serviceRef" : {
"clusterName" : "cluster",
"serviceName" : "kudu"
},
"entityStatus" : "GOOD_HEALTH"
}
...
]
}
所以我只想要类型为 KUDU_TSERVER 时的名称值
我正在使用这句话
cat test |jq '.items[]' |jq 'select(.type == "KUDU_TSERVER" )' |jq -r '.name'
kudu-KUDU_TSERVER-2d63fec551a74320fdcc0c65007c76e4
kudu-KUDU_TSERVER-2f54da7e700b29f486dc977903077b42
kudu-KUDU_TSERVER-c6eed063790c0ebff3f4c3caa29f35c2
kudu-KUDU_TSERVER-668d476199e24b75dacdc2c142212d7f
kudu-KUDU_TSERVER-b19f608fc0b214334b7cb9aa8911f30d
kudu-KUDU_TSERVER-56aeb0bf37e61755e659be7ee1dd15cb
kudu-KUDU_TSERVER-4b773838c3f005671ea6ab1d77c69ff7
有没有更好的方法来做到这一点?我觉得这个过程没有优化
解决方案
您绝对可以进行单个 jq 查询。
cat test | jq -r '.items[] | select(.type == "KUDU_TSERVER" ) | .name'
除此之外,您可以--stream
用于大型输入文件。
推荐阅读
- nginx - Nginx,重定向后在url中保存位置路径
- javascript - 将固定位置放在相对位置内时如何工作
- c# - 如何从 Xamarin Forms App 发送打印到 Epson EM T82 POS 打印机?
- ios - iOS 应用程序安装形式 TestFlight 的行为不同于直接从 Xcode 安装的应用程序
- eclipse - gitignore 无法忽略某些目录下的文件
- android - 有没有一种方法可以在 android 编程中获取更改的联系人姓名而不是 CallLogs 中的缓存名称
- codeigniter - 如何在codeIgniter中使用ajax传递Controller方法
- email - Google App Engine 使用代码 308 响应
- android - Cordova 没有将 android 应用程序启动到模拟器
- ios - 在 swift 5 中使用 @dynamicCallable 有什么需要?