Как я могу получить элемент json файл с помощью скрипта оболочки - PullRequest
0 голосов
/ 31 марта 2020

У меня есть json файл истории. json. Он создан сценарием bash, я вызываю сценарий в Jenkinsfile.

[
  {
    "PTF_INSTALL_DATE": " 2020-03-31 09:12:10",
    "PTF_CONTENT": [
      {
        "NAME": "api_batch_API",
        "CHECKED": "api_batch_NOT_SELECTED",
        "VERSION": "G02R00C13_c14",
        "CONFIG_FILE": ""
      }
    ]
  },
  {
    "PTF_INSTALL_DATE": " 2020-03-31 10:12:10",
    "PTF_CONTENT": [
      {
        "NAME": "api_back_API",
        "CHECKED": "api_back_NOT_SELECTED",
        "VERSION": "G02R00C13_c14",
        "CONFIG_FILE": ""
      }
    ]
  }
]

Поэтому, когда я выполняю сборку в jenkins, элемент добавляется в последний файл исторического файла. json как показано ниже:

[
      {
        "PTF_INSTALL_DATE": " 2020-03-31 09:12:10",
        "PTF_CONTENT": [
          {
            "NAME": "api_batch_API",
            "CHECKED": "api_batch_NOT_SELECTED",
            "VERSION": "G02R00C13_c14",
            "CONFIG_FILE": ""
          }
        ]
      },
      {
        "PTF_INSTALL_DATE": " 2020-03-31 10:12:10",
        "PTF_CONTENT": [
          {
            "NAME": "api_back_API",
            "CHECKED": "api_back_NOT_SELECTED",
            "VERSION": "G02R00C13_c14",
            "CONFIG_FILE": ""
          }
        ]
      },
      {
        "PTF_INSTALL_DATE": " 2020-03-31 11:12:10",
        "PTF_CONTENT": [
          {
            "NAME": "api_ihm_API",
            "CHECKED": "api_ihm_NOT_SELECTED",
            "VERSION": "G02R00C13_c14",
            "CONFIG_FILE": ""
          }
        ]
      }

    ]

и т. Д. (В моем случае теперь у меня есть много элементов в файле json). Итак, мой вопрос: как я могу получить только последние 15 элементов, а остальные удалить? Я пытаюсь это сделать, но у меня ничего не получается:

for k in $(jq length historique.json); do
if [[ $k -gt 15 ]]; then
jq 'del(.[0])' historique.json > historique1.json
fi
done

Любое предложение ?? (И извините за мой английский sh)

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Чтобы вывести только последние 15 элементов массива, используйте синтаксис слайса.

jq '.[-15:]' historique.json
0 голосов
/ 31 марта 2020

Если я вас правильно понял, вы можете использовать оператор диапазона jq:

jq '.[-15:]' historique.json

Это должно вернуть 15 последних элементов в массиве.

...