You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jq按条件提取无指定键的数组特定值,适配多Deployment场景?

jq多字段匹配提取方案

Powershell 可用命令

kubectl get deployments -o json | jq -r '.items[] | .metadata.name as $deplName | .spec.template.spec.containers[]?.students[]? | select(test("^Jeff")) | "\($deplName):\t\(.)"'

用你提供的示例JSON执行上述命令,输出结果和你预期的完全一致:

student-deployment:	Jefferson

实现逻辑

  • 遍历所有Deployment资源时,先将当前Deployment的名称存入$deplName变量,避免后续遍历子数组时丢失上下文
  • 逐层遍历容器数组、学生数组,后缀?用于兼容部分容器不存在students字段的场景,避免执行报错
  • 直接对students数组的字符串元素做正则匹配,不需要数组元素配置额外键,命中规则的元素会直接返回

问题解答

1. 无键数组是否可以按条件提取特定值?

可以。jq支持直接遍历数组的每一个元素,对元素本身做条件过滤,不需要依赖额外的键。上述方案就是直接对students数组的字符串值做正则匹配,命中的元素会直接输出。

2. 方案是否适配多Deployment场景?

完全适配。存在多个Deployment时,每个Deployment下只要有符合匹配规则的学生,都会单独输出一行对应记录;如果单个Deployment下有多个匹配的学生,也会逐行输出对应的部署名和学生名,不会出现数据混淆或遗漏。


内容的提问来源于stack exchange,提问作者calmmash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:45:03