我跑
curl -X POST'http://172.24.0.40:4243/build?t=basejava8'
并获得curl输出
{“stream”:“Step 0:FROM phusion / baseimage:0.9.16 \ n”} {“stream”:“ --- \ u003e 5a14c1498ff4 \ n“} {”stream“:”步骤1:CMD / sbin / my_init \ n“} {”stream“:”--- \ u003e使用缓存\ n“} {”stream“: “--- \ u003e 9ca43c73f936 \ n“} {”stream“:”步骤2:运行apt-get update \ u0026 \ u0026
DEBIAN_FRONTEND =非交互式apt-get install -y
ca-certificates \ n“} {”stream“:”--- \ u003e使用缓存\ n“} {”stream“:” --- \ u003e b5dcbe0f1c27 \ n“} {”stream“:”步骤3:运行echo oracle-java8-installer shared / accepted-oracle-license-v1-1 select true | debconf-set-selections \ u0026 add-apt-repository -y ppa:webupd8team / java \ u0026 \ u0026 apt-get update \ u0026 \ u0026
apt-get install -y oracle-java8-installer \ u0026 apt-get 安装-y oracle-java8-set-default \ u0026 \ r00 -rf / var / lib / apt / lists / * \ u0026 \ u0026 rm -rf / var / cache / oracle-jdk8-installer \ n“} {”stream“:”--- \ u003e使用 cache \ n“} {”stream“:”--- \ u003e 4eaa2e3796a2 \ n“} {”stream“:”第4步: ENV JAVA_HOME / usr / lib / jvm / java-8-oracle \ n“} {”stream“:”--- \ u003e 使用缓存\ n“} {”stream“:”--- \ u003e 5d8bfb398fb6 \ n“} {“stream”:“已成功构建5d8bfb398fb6 \ n”}
是否可以避免输出中的括号和“流”,即通过卷曲参数作为纯文本?
答案 0 :(得分:1)
您的问题与curl
无关:您所看到的是该服务(在本例中为Docker)实际上为您提供的内容。
尽管如此,虽然您可以尝试使用正则表达式提取所需的值,但我建议您使用JSON解析器来解析每一行。在您的示例中,每一行看起来都像{"stream":"..."}
,但Docker API文档中的示例显示错误也表示为JSON流行:
HTTP/1.1 200 OK
Content-Type: application/json
{"stream": "Step 1..."}
{"stream": "..."}
{"error": "Error...", "errorDetail": {"code": 123, "message": "Error..."}}
在命令行上执行JSON解析的有用工具是 jq 。如果您只想要每行的-r
键的原始(stream
)值,您可以执行以下操作:
curl -X POST '...' | jq -r .stream
这会忽略(打印空行)输入中的非流线。
有关详细信息,请参阅Docker documentation和jq manual。