簡體   English   中英

AWS CLI 命令修改/裁剪 output?

[英]AWS CLI Command modify / crop output?

我正在尋找使用 AWS CLI --query 標志裁剪單個字段的 output 的方法。

例如,我可以 pipe 到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. 一種將 pipe 限制在 cli 表 output 中的管道之間的長度最多為 50 個字符的命令的方法?

或者

  1. Output from the aws command as JSON, change the fields (using jq maybe?) and then output the json to a table similar to what the aws <command> --output table would?

謝謝!

我能得到的最接近的是用管道分隔的 output ,您可以在其中使用下面的示例指定字符串字段的最大長度。如果您需要它,您將需要做更多的工作--output table給您..列出下面是生成管道分隔 output 的示例,其中所有字符串字段都被截斷為長度 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(" | ") '

下面列出的是它提供的 output

"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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM