Сценарий оболочки - сортировка массива AWS cloudwatch metrics json на основе свойства «Timestamp» с необработанным выводом, включая статистику - PullRequest
0 голосов
/ 21 февраля 2020

Я бегу aws cli aws cloudwatch get-metric-statistics --metric-name CPUUtilization --start-time 2010-02-20T12:00:00 --end-time 2010-02-20T15:00:00 --period 60 --namespace AWS/EC2 --extended-statistics p80 --dimensions Name=InstanceId,Value=i-0b123423423

вывод получается как

{
  "Label": "CPUUtilization",
  "Datapoints": [
    {
      "Timestamp": "2020-02-20T12:15:00Z",
      "Unit": "Percent",
      "ExtendedStatistics": {
        "p80": 0.16587132264856133
      }
    },

Как мне получить вывод в формате (2 столбца) ниже

19.514049550078127  2020-02-13T20:15:00Z
12.721997782508938  2020-02-13T19:15:00Z
13.318820949213313  2020-02-13T18:15:00Z
15.994192991030545  2020-02-13T17:15:00Z
18.13096421299414   2020-02-13T16:15:00Z

с заголовком как CPUUtilization (2 столбца)

CPUUtilization
19.514049550078127  2020-02-13T20:15:00Z
12.721997782508938  2020-02-13T19:15:00Z
13.318820949213313  2020-02-13T18:15:00Z
15.994192991030545  2020-02-13T17:15:00Z
18.13096421299414   2020-02-13T16:15:00Z

и в одном столбце

19.514049550078127  
12.721997782508938  
13.318820949213313  
15.994192991030545  
18.13096421299414   

Как этого добиться?

1 Ответ

0 голосов
/ 21 февраля 2020

Если исходный файл имеет значение input.json, то:

Для вывода в формате 2 столбцов:

jq -r  '.Datapoints[] | [.ExtendedStatistics.p80, .Timestamp] | @tsv' input.json | sort -nr

С заголовком в качестве CPUUtilization (2 столбца):

echo CPUUtilization; jq -r  '.Datapoints[] | [.ExtendedStatistics.p80, .Timestamp] | @tsv' input.json | sort -nr 

А в одном столбце:

jq -r  '.Datapoints[] | [.ExtendedStatistics.p80] | @tsv' input.json | sort -nr
...