Как мне разобрать вывод из результата команды CURL? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть вывод на консоль Jenkins, который выглядит так:

Started by remote host 10.16.17.13
Building remotely on ep9infrajen201 (ep9) in workspace d:\Jenkins\workspace\Tools\Provision
[AWS-NetProvision] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:\Users\user\AppData\Local\Temp\jenkins12345.ps1'"

Request network range: 10.1.0.0/13
{
    "networks":  [
                     "10.1.0.0/24"
                 ]
}
Finished: SUCCESS

Я получаю это от команды curl, которую я запускаю. проверить JENKINS_JOB_URL / lastBuild / consoleText

Мой вопрос, ради какой-то другой автоматизации, которую я делаю, как мне получить "10.1.0.0/24", чтобы я мог назначить ее переменной оболочки с помощью инструментов LINUX?

Спасибо

1 Ответ

0 голосов
/ 29 июня 2018

Поскольку вы указали среди тегов вашего дублирующего вопроса , я буду считать, что у вас установлено jq. Сначала вы должны очистить вывод, чтобы получить JSON, а затем перейти к той части JSON, которая вам нужна. awk делает первое, jq второе.

.... | awk '/^{$/{p=1}{if(p){print}}/^}$/{p=0}' | jq -r .networks[0]

Скрипт AWK самостоятельно ищет { в строке, чтобы включить флаг p; печатает текущую строку, если установлен флаг; и выключает флаг, когда встречает } сам по себе.

РЕДАКТИРОВАТЬ: Поскольку этот вывод был сгенерирован на машине DOS, он имеет окончания строки DOS (\r\n). Чтобы преобразовать их до awk, дополнительно проложите через dos2unix.

...