filter - jq过滤输出不匹配多个条件
问题描述
我想过滤 Cloudwatch 输出,使其仅显示 CPUUtilization 阈值不等于 70、60 和 40。
以下过滤器按预期工作,但我想知道该select(.Threshold)
命令是否可以组合,或者使用其他运算符/命令。
jq '.MetricAlarms[]|select(.MetricName == "CPUUtilization")|select(.Threshold != 70)|select(.Threshold != 60)|select(.Threshold != 40)' alarms.json
解决方案
如果您的jq
版本支持IN
builtin,您可以使用它检查您的变量是否等于多个值并使用not
它来否定它,您可以这样做
.MetricAlarms[]
| select( .MetricName == "CPUUtilization" and (.Threshold | IN(40,60,70) | not ) )
推荐阅读
- reactjs - 如何访问 ref 或 focus 到 material-ui/KeyboardDatePicker?
- c++ - C++ 在包含复制构造函数时给出错误?
- javascript - TypeError:无法读取未定义的属性“数据”-无法在 Reactjs 中访问超出特定级别的对象“道具”
- android - 我们如何在没有 android studio 的情况下为 windows 创建 android 模拟器以在 Visual Studio 代码中启动 Flutter 应用程序
- php - WooCommerce:出售时将特色产品设置为假
- tensorflow - 加载并运行测试 .trt 模型
- css - 两个不同大小的图像具有相等的高度和父级的填充宽度
- amazon-web-services - 部署到时 S3 PutObject 访问被拒绝
- odoo - 从 Odoo 12 中 POS 收据上的日期时间字段中删除时间
- python - 为什么在cmd中输入命令后没有出现python的版本?