Как получить последние 7 дней в выводе ниже - PullRequest
0 голосов
/ 04 мая 2019

Я использую некоторые API для своих сборок, и результат для них велик.Я использую GREP для захвата необходимого содержимого в выводе.

Теперь мне нужно отсортировать этот вывод, чтобы захватить только последние 7 дней.Получив выходные данные только за последние 7 дней, я смогу посчитать свои сборки за последние 7 дней.Мне нужно выполнить функцию с PRESENTDATE -7, чтобы присутствовали только те значения сборки, которые выполнялись за последние 7 дней.

"lastStarted": "2019-05-03T03:26:35.705-400"
"lastStarted": "2019-05-03T03:19:38.705-500"
"lastStarted": "2019-05-02T03:18:55.709-950"
"lastStarted": "2019-05-02T08:36:55.655-955"
"lastStarted": "2019-05-02T09:33:45.705-700"
"lastStarted": "2019-05-02T02:22:35.705-300"
"lastStarted": "2019-05-01T01:59:22.705-800"
"lastStarted": "2019-05-01T07:07:36.705-320"
"lastStarted": "2019-05-01T06:11:44.705-960"
"lastStarted": "2019-04-30T08:22:35.705-600"
"lastStarted": "2019-04-30T09:26:55.705-900"
"lastStarted": "2019-04-29T01:26:55.105-700"
"lastStarted": "2019-04-28T02:26:50.205-100"
"lastStarted": "2019-04-27T05:36:10.705-200"
"lastStarted": "2019-04-27T09:26:20.905-300"
"lastStarted": "2019-04-27T06:55:30.505-700"
"lastStarted": "2019-04-26T07:12:35.405-800"
"lastStarted": "2019-04-26T02:32:55.605-600"
"lastStarted": "2019-04-25T22:53:59.205-500"
"lastStarted": "2019-04-24T89:54:23.305-700"
"lastStarted": "2019-04-23T12:12:20.655-100"
"lastStarted": "2019-04-22T56:55:35.725-200"
"lastStarted": "2019-04-21T98:57:28.855-300"
"lastStarted": "2019-04-21T99:56:38.635-600"
"lastStarted": "2019-04-21T21:36:59.955-200"
"lastStarted": "2019-04-19T09:46:19.675-800"
"lastStarted": "2019-04-18T02:56:38.325-705"
"lastStarted": "2019-04-17T19:36:35.705-700"

Мне нужны только те "lastStarted" в моем выводе, которые составляют 7 днейза текущей датой.Как и в приведенном выше примере, потребуется только lastStarted до 2019-04-27.Остальные должны быть удалены.Затем я найду эти значения и получу количество сборок, запущенных за последнюю неделю.

Ответы [ 2 ]

1 голос
/ 04 мая 2019
 grep $(date --date="7 days ago" "+%Y-%m-%d") myfile
1 голос
/ 04 мая 2019

Вы не опубликовали фактический JSON, поэтому я собираюсь использовать следующий JSON и использовать его в качестве входных данных.

' so_55981304.json ':

{
  "uri": "localhost:8081/abc/api/build",
  "builds": [
    {
      "uri": "/my-build",
      "lastStarted": "2019-04-17T19:36:35.705-700"
    },
    {
      "uri": "/sample1",
      "lastStarted": "2019-04-18T02:56:38.325-705"
    },
    {
      "uri": "/sample2",
      "lastStarted": "2019-04-19T09:46:19.675-800"
    },
    {
      "uri": "/sample3",
      "lastStarted": "2019-04-21T21:36:59.955-200"
    },
    {
      "uri": "/sample4",
      "lastStarted": "2019-04-21T99:56:38.635-600"
    },
    {
      "uri": "/sample5",
      "lastStarted": "2019-04-21T98:57:28.855-300"
    },
    {
      "uri": "/sample6",
      "lastStarted": "2019-04-22T56:55:35.725-200"
    },
    {
      "uri": "/sample7",
      "lastStarted": "2019-04-23T12:12:20.655-100"
    },
    {
      "uri": "/sample8",
      "lastStarted": "2019-04-24T89:54:23.305-700"
    },
    {
      "uri": "/sample9",
      "lastStarted": "2019-04-25T22:53:59.205-500"
    },
    {
      "uri": "/sample10",
      "lastStarted": "2019-04-26T02:32:55.605-600"
    },
    {
      "uri": "/sample11",
      "lastStarted": "2019-04-26T07:12:35.405-800"
    },
    {
      "uri": "/sample12",
      "lastStarted": "2019-04-27T06:55:30.505-700"
    },
    {
      "uri": "/sample13",
      "lastStarted": "2019-04-27T09:26:20.905-300"
    },
    {
      "uri": "/sample14",
      "lastStarted": "2019-04-27T05:36:10.705-200"
    },
    {
      "uri": "/sample15",
      "lastStarted": "2019-04-28T02:26:50.205-100"
    },
    {
      "uri": "/sample16",
      "lastStarted": "2019-04-29T01:26:55.105-700"
    },
    {
      "uri": "/sample17",
      "lastStarted": "2019-04-30T09:26:55.705-900"
    },
    {
      "uri": "/sample18",
      "lastStarted": "2019-04-30T08:22:35.705-600"
    },
    {
      "uri": "/sample19",
      "lastStarted": "2019-05-01T06:11:44.705-960"
    },
    {
      "uri": "/sample20",
      "lastStarted": "2019-05-01T07:07:36.705-320"
    },
    {
      "uri": "/sample21",
      "lastStarted": "2019-05-01T01:59:22.705-800"
    },
    {
      "uri": "/sample22",
      "lastStarted": "2019-05-02T02:22:35.705-300"
    },
    {
      "uri": "/sample23",
      "lastStarted": "2019-05-02T09:33:45.705-700"
    },
    {
      "uri": "/sample24",
      "lastStarted": "2019-05-02T08:36:55.655-955"
    },
    {
      "uri": "/sample25",
      "lastStarted": "2019-05-02T03:18:55.709-950"
    },
    {
      "uri": "/sample26",
      "lastStarted": "2019-05-03T03:19:38.705-500"
    },
    {
      "uri": "/sample27",
      "lastStarted": "2019-05-03T03:26:35.705-400"
    }
  ]
}

(Примечание: "2019-04-21T99:56:38.635-600", 99 часов ... действительно ?! Это недопустимый dateTime .)

Xidel анализатор HTML / XML / JSON (с использованием шаблонов CSS, XPath, XQuery, JSONiq и шаблонов) может делать то, что вы хотите.

xidel -s so_55981304.json --xquery '
  for $x in $json/(builds)()
  where $x/lastStarted lt current-dateTime() - duration("P7D")
  order by $x/lastStarted
  return $x
'

Возвращает все объекты из массива builds доcurrent-dateTime() - duration("P7D") (2019-04-27T14:22:40.359 на данный момент).
Также обратите внимание, что необходимо order by $x/lastStarted, потому что (при условии вашего списка lastStarted атрибутов в исходном сообщении) они не отсортированы правильно.

Для подсчета этих объектов просто поставьте count( ) вокруг запроса:

xidel -s so_55981304.json --xquery '
  count(
    for $x in $json/(builds)()
    where $x/lastStarted lt current-dateTime() - duration("P7D")
    order by $x/lastStarted
    return $x
  )
'

Это вернет 15.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...