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

使用jq查询指定用户组的用户,实现换行及逗号分隔输出

报错原因

你执行的命令报错是因为JSON结构中u1没有groups字段,.groups取值为null,对null执行[]遍历操作就会触发Cannot iterate over null错误。

按行输出属于G1组的用户

使用如下命令即可实现预期输出,不会报错:

jq -r '.[] | select(any(.groups?[]; .name == "G1")) | .user' json

命令说明:

  • .groups?中的?是安全取值符,当对象没有groups字段时直接返回空,不会触发错误
  • any(.groups?[]; .name == "G1")判断当前用户的用户组列表中是否存在名称为G1的组,同时避免同一用户多次加入G1时重复输出
  • 执行后输出为:
u2
u3

如果需要按组ID匹配,将.name == "G1"替换为.id == "100001"即可。

直接输出逗号分隔结果

不需要借助外部工具,jq本身支持数组拼接,使用如下命令即可直接输出u2,u3:

jq -r 'map(select(any(.groups?[]; .name == "G1")) | .user) | join(",")' json

命令说明:

  • map()操作将原数组中所有符合条件的用户的user字段提取为新数组
  • join(",")将数组元素用逗号拼接为单个字符串输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:45:07