我有一个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变量?
谢谢
答案 0 :(得分:0)
由于您在jq的标记中列出了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
进行传递。