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方向正确。