AWS CLI命令修改/裁剪输出?

时间:2020-07-14 23:39:41

标签: amazon-web-services output 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

任何人都知道一种新颖的方法来执行此操作,而不必知道(可变长度)字段长度吗?

  1. 是否可以将MetricName字段更改为--query的一部分,因此该表仅显示该指标的前50个字符?

OR

  1. 一种通过管道传递给命令的方法,该命令会将cli表输出中的管道之间的长度限制为最多50个字符?

OR

  1. aws命令以JSON格式输出,更改字段(可能使用jq吗?),然后将json输出到类似于aws <command> --output table的表中?

谢谢!

1 个答案:

答案 0 :(得分:0)

我能得到的最接近的是一个管道分隔的输出,您可以使用下面的示例指定字符串字段的最大长度。你.. 下面列出的是生成管道分隔输出的示例,其中所有字符串字段都被截断为长度 10

--output table

下面列出的是它提供的输出

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(" | ") '
相关问题