代码之家  ›  专栏  ›  技术社区  ›  David

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

  •  -2
  • David  · 技术社区  · 6 年前

    我有一个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的作业url/lastbuild/consoletext

    我的问题是,为了我正在做的其他自动化工作,我如何才能 "10.1.0.0/24" 所以我可以使用linux工具将它赋给shell变量?

    谢谢你

    1 回复  |  直到 6 年前
        1
  •  0
  •   Amadan    6 年前

    自从你列出 在你的标签中 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 )中。把以前的那些 锥子 ,另外通过管道 dos2unix 是的。