如何以不同的方式管道传输 curl 答案的主体和打印输出?

如何以不同的方式管道传输 curl 答案的主体和打印输出?

我想在命令行中打印一些 curl 的输出,比如 http 标头,然后是 stdin/stdout 程序处理的答案主体。例如:

打印状态码: curl -s -w "%{http_code} \\n" -o "/dev/null" http://myURL.com

然后使用 json 解析工具处理输出: curl -s http://myURL.com | python -mjson.tool

我想用一个命令完成这两项操作,我觉得这可能要归功于 -o 选项,它使得 curl 的输出和查询的实际答案有所不同。问题是 -o 直接写入文件。有人有办法吗?

答案1

你可以使用 bash 的进程替换>(cmd)。例如:

curl -s -w "%{http_code}\n" -o >(ruby -ne 'printf("-%6s%s", $., $_)') http://www.example.com/

另一个可能满足您需求的方法是curl -v,它将把标题发送到 stderr,将正文发送到 stdout。例如,

curl -v http://www.example.com/ | ruby -ne 'printf("-%6s%s", $., $_)'

相关内容