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

如何在jq中使用Boolean NOT筛选非@xyz.com域名的用户?

jq筛选非@xyz.com域名用户的正确写法

你当前筛选@xyz.com域名用户的代码没问题,要实现反向筛选(排除该域名用户),jq里有两种标准的布尔取反方式:

方式一:用not关键字取反

把test的结果通过not反转后传入select:

.[] | select(.email | test("@xyz.com") | not) | {id, username}

方式二:用!运算符取反

!是更简洁的取反写法,逻辑和not完全一致:

.[] | select(.email | !test("@xyz.com")) | {id, username}

你之前的写法错误原因

你尝试的两种写法都不符合jq语法规则:

  • test函数的第二个参数只能是正则修饰符(比如i代表忽略大小写),不能填!=这类比较运算符
  • jq中不能直接用!=对函数返回值取反,必须使用专门的布尔取反操作符not或!

可选优化:处理缺失email字段的情况

如果你的JSON数据里可能存在没有email字段的用户,可以先判断字段存在再筛选,避免报错:

.[] | select(.email != null and !(.email | test("@xyz.com"))) | {id, username}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:02:21