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

如何用jq根据属性值过滤对象并拼接属性内容?

解决方案

你可以用 select() 结合正则匹配函数 test() 完成筛选,以下是完整的jq命令:

.[] | select(.name | test(/^env\./)) | "\(.name)=\"\(.value)\""

分步说明:

  • .[]:把输入的数组展开为单个对象,方便逐个处理
  • select(.name | test(/^env\./)):筛选出name属性值匹配正则^env\.的对象。这里用原生正则表达式/^env\./比字符串形式更简洁,无需额外转义反斜杠;如果用字符串写法要写成"^env\\."
  • "\(.name)=\"\(.value)\"":按需求拼接成指定格式,给value加上双引号,和目标输出一致

测试示例:

先修正原JSON的语法错误(补全对象间的逗号),保存为data.json:

[
  { "name":"Genus", "value": "canis" },
  { "name":"env.VAR1", "value": "dogsdrool" },
  { "name":"env.VAR2", "value": "catsrule" }
]

执行命令:

jq -r '.[] | select(.name | test(/^env\./)) | "\(.name)=\"\(.value)\""' data.json

输出结果:

env.VAR1="dogsdrool"
env.VAR2="catsrule"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:24:54