首页 > 解决方案 > 为什么在删除新行时 tr 会完全抑制我的 curl 响应标头输出?

问题描述

为什么tr不简单地替换此输出中包含的换行符?

> curl -I www.google.com  2>/dev/null | egrep 'HTTP|Server'
HTTP/1.1 200 OK
Server: gws
> curl -I www.google.com  2>/dev/null | egrep 'HTTP|Server' | tr '\n' ' '
>                                                                                                                                                                                                                                                                              

替换其他字符时效果很好:

> curl -I www.google.com  2>/dev/null | egrep 'HTTP|Server' | tr 'TS' ' '
H  P/1.1 200 OK
 erver: gws
>

标签: httptr

解决方案


因此,当我阅读正确的文档时,这一点变得非常清楚:HTTP 使用回车符和换行符,即可爱CRLF的换行符!

例如删除\r和替换\n将完成这项工作:

$ curl -I www.google.com  2>/dev/null | egrep 'HTTP|Server' | tr -d '\r' | tr '\n' ' '
HTTP/1.1 200 OK Server: gws

只是删除\n将在您的输出中留下回车,然后您的 *nix shell 将其解释为返回到同一行的开头。我想是命令提示符然后覆盖了那里的内容。简单的!


推荐阅读