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个字符的方法

  1. 管道连接到命令的方法,该命令将把cli表输出中管道之间的长度限制为最多50个字符

  1. 从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"

最新更新