2016-12-28 10 views
1

После выполнения этого запроса в ArtifactoryНевозможно разобрать JSON выход Artifactory с JQ в Linux

/usr/bin/jfrog rt s foo/01_Develop/01_CI/HPCC-Package-*.zip 

У меня есть этот выход:

[Info] Searching artifacts... 
[Info] Found 3 artifacts. 
[ 
    { 
    "path": "foo/01_Develop/01_CI/HPCC-Package-47.zip" 
    }, 
    { 
    "path": "foo/01_Develop/01_CI/HPCC-Package-48.zip" 
    }, 
    { 
    "path": "foo/01_Develop/01_CI/HPCC-Package-72.zip" 
    } 
] 

Я хочу, чтобы получить последний путь в массиве JSon с эта команда, как предложено here:

/usr/bin/jfrog rt s foo/01_Develop/01_CI/HPCC-Package-*.zip | jq .[-1].path 

Но терпит неудачу с

parse error: Invalid numeric literal at line 1, column 6

Я не могу изменить JSON, как это выход из Artifactory jfrog инструмента

  • Как я могу исправить JQ запрос?
  • Есть ли другой способ получить последний путь?

Примечание: У меня есть JQ версии 1.5

UPDATE:

Использование цитат у меня есть точно такая же ошибка:

/usr/bin/jfrog rt s foo/01_Develop/01_CI/HPCC-Package-*.zip | jq '.[-1].path' 
/usr/bin/jfrog rt s foo/01_Develop/01_CI/HPCC-Package-*.zip | jq ".[-1].path" 
+0

Невозможно воспроизвести с помощью JQ 1.5 на Ubuntu. Возможно, ваша оболочка сработала с '[-1]'? Что произойдет, если вы поместите '. [- 1] .path' в кавычки? – jwodder

+0

Добавлено как обновление. С кавычками у меня такая же ошибка –

+0

У меня есть некоторые заголовки в файле, возможно, это проблема –

ответ

1

Для записи, вот JQ-единственное решение, которое предполагает, что существует ровно две строки не-JSON прологе:

... | jq -n -R -r '[inputs][2:] | join("") | fromjson[-1]' 
{ 
    "path": "foo/01_Develop/01_CI/HPCC-Package-72.zip" 
} 
3

Ваш выход Artifactory не чисто ... JSON вам нужно удалить эти части, не относящиеся к json. Предполагая, что нам нужно будет пропустить первые две строки, мы могли бы просто использовать хвост, чтобы пропустить их.

/usr/bin/jfrog rt s foo/01_Develop/01_CI/HPCC-Package-*.zip | tail -n +3 | jq '.[-1].path' 
3

Как уже упоминалось в предыдущих ответах, эта ошибка произошла из-за выхода JFrog CLI не является чистым JSON.
Возможно, вы захотите установить переменную среды JFROG_CLI_LOG_LEVEL в ERROR, чтобы команды не запрашивали дополнительные сообщения.
Для получения дополнительной информации вы можете прочитать: JFrog CLI wiki.

 Смежные вопросы

  • Нет связанных вопросов^_^