我一直在使用curl -i http://website.com
很长一段时间。它很棒,它会报告响应标头和信息。
我还使用了一个工具jq
来解析和漂亮地打印JSON。我想做以下事情:
curl -i http://website.com | jq -r .
问题在于HTTP标头被转发到jq
。
有没有办法将-i
重定向到标准错误?
答案 0 :(得分:1)
由于我今天遇到了一些问题,所以我使用了:
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,下一条语句强制awk立即停止处理当前记录并继续下一条记录 [2] 。 1
只是{print $0}
[3] 的简写。
[1] https://stackoverflow.com/a/33297878
[2] https://www.gnu.org/software/gawk/manual/html_node/Next-Statement.html
[3] https://stackoverflow.com/a/20263611
答案 1 :(得分:0)
尝试以下命令:
curl -s -D /dev/stderr http://www.website.com/... | jq