Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Curl 向stderr报告HTTP响应头?_Curl - Fatal编程技术网

Curl 向stderr报告HTTP响应头?

Curl 向stderr报告HTTP响应头?,curl,Curl,我一直在使用curl-Ihttp://website.com很长一段时间。很好,它报告了响应标题和信息 我还使用一个工具jq,它解析并漂亮地打印JSON。我想做以下几点: curl -i http://website.com | jq -r . 问题是HTTP头被转发到jq 有没有办法将-i重定向到标准错误?因为我今天遇到了一些问题,所以我使用了: curl -i http://some-server/get.json | awk '{ sub("\r$", ""); print }' | a

我一直在使用
curl-Ihttp://website.com
很长一段时间。很好,它报告了响应标题和信息

我还使用一个工具
jq
,它解析并漂亮地打印JSON。我想做以下几点:

curl -i http://website.com | jq -r .
问题是HTTP头被转发到
jq


有没有办法将
-i
重定向到标准错误?

因为我今天遇到了一些问题,所以我使用了:

curl -i http://some-server/get.json | awk '{ sub("\r$", ""); print }' | awk -v RS= 'NR==1{print > "/dev/stderr";next} 1' > /dev/stdout  | jq .
很可能不是最好的解决方案,但对我来说很有效

说明:第一个awk程序只是将windows新行转换为unix新行

在第二个程序中,
-v RS=
将指示awk使用一个或多个空行作为记录分隔符[1]
NR==1{print>“/dev/stderr”;next}
将第一条记录(NR==1)打印到stderr,next语句强制awk立即停止处理当前记录并继续处理下一条记录[2]
1
只是
{print$0}
[3]的缩写

[1]
[2]
[3]

试试这个命令:


curl-s-D/dev/stderrhttp://www.website.com/... | jq

这正是OP想要的
-D/dev/stderr
将标题写入stderr,
-s
删除进度条。我经常添加
-S
,所以如果curl失败,我仍然会得到错误(否则
-S
会隐藏错误)http://www.website.com/... | jq.适用于windows。tip的tyvm方向正确。