首页 > 解决方案 > jq过滤输出不匹配多个条件

问题描述

我想过滤 Cloudwatch 输出,使其仅显示 CPUUtilization 阈值不等于 70、60 和 40。

以下过滤器按预期工作,但我想知道该select(.Threshold)命令是否可以组合,或者使用其他运算符/命令。

jq '.MetricAlarms[]|select(.MetricName == "CPUUtilization")|select(.Threshold != 70)|select(.Threshold != 60)|select(.Threshold != 40)' alarms.json

标签: filterjqamazon-cloudwatch

解决方案


如果您的jq版本支持INbuiltin,您可以使用它检查您的变量是否等于多个值并使用not它来否定它,您可以这样做

.MetricAlarms[] 
| select( .MetricName == "CPUUtilization" and (.Threshold |  IN(40,60,70) | not ) )

推荐阅读