amazon-web-services - AWS CLI 命令修改/裁剪输出?
问题描述
我正在寻找使用 AWS CLI --query 标志裁剪单个字段输出的方法。
例如,我可以通过管道传递cut
命令来剪切每行的一部分,但这需要手动计算名称中的字符。
$ aws --region us-east-1 cloudwatch describe-alarms \
--query 'MetricAlarms[*].{AlarmName:AlarmName,MetricName:MetricName,Namespace:Namespace,Threshold:Threshold,Time:StateUpdatedTimestamp,State:StateValue}' \
--output table | cut -c1-50,97-147,197-500
任何人都知道这样做的创造性方法,而不必知道(可变长度)字段长度?
- 一种将 MetricName 字段更改为 --query 的一部分的方法,因此该表仅显示指标的前 50 个字符?
或者
- 一种将 cli 表输出中管道之间的长度限制为最多 50 个字符的命令的管道方式?
或者
- 从 aws 命令输出为 JSON,更改字段(可能使用 jq?),然后将 json 输出到类似于将要的表
aws <command> --output table
?
谢谢!
解决方案
我能得到的最接近的是管道分隔的输出,您可以使用下面的示例指定字符串字段的最大长度。如果您需要它,您将需要做更多的工作--output table
。下面列出的是示例产生管道分隔的输出,所有字符串字段都被截断为长度 10
aws cloudwatch describe-alarms --query 'MetricAlarms[*].{"AlarmName":"AlarmName","MetricName":"MetricName","Namespace":"Namespace","Threshold":"Threshold","Time":"StateUpdated","State":"StateValue"}' --output json | jq '.[][] |= (if type == "string" then .[0:10] else .|tostring end) | .[] | join(" | ") '
下面列出的是它提供的输出
"TargetTrac | ConsumedWr | AWS/Dynamo | 210 | null | OK"
"TargetTrac | Provisione | AWS/Dynamo | 5 | null | OK"
"TargetTrac | Provisione | AWS/Dynamo | 5 | null | OK"
"TargetTrac | ConsumedWr | AWS/Dynamo | 210 | null | OK"
"TargetTrac | Provisione | AWS/Dynamo | 5 | null | OK"
"TargetTrac | Provisione | AWS/Dynamo | 5 | null | OK"
推荐阅读
- uitextfield - 使用 VoiceOver 使 UITextField 将数字读取为数字
- uipath - 在excel数据表UIPath中添加数据
- android - 意图与意图有什么区别?
- sql - 使用 SQL Alchemy 和 pymssql 连接到服务器时遇到问题
- sockets - 应用程序如何跟踪与其他计算机的连接?
- css - 按钮位于页面底部居中
- ajax - MVC 4.x 验证下拉菜单并重定向到下一页
- pandas - 使用 Seaborn FacetGrid 格式化日期标签
- python - 如何通过 API 响应不断更新 Kivy 接口?
- python - 将转换后的 oozie DAG 部署到 Google Composer Airflow:没有名为“o2a”的模块