如何解析CURL命令结果的输出?

时间:2018-06-29 00:24:54

标签: linux bash parsing jenkins sed

我有一个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工具将其分配给shell变量?

谢谢

1 个答案:

答案 0 :(得分:0)

由于您在的标记中列出了duplicate question,因此我假设您已经安装了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进行传递。