为什么 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
>

因此,当我阅读正确的文档时,这一点变得非常清楚: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 将其解释为返回到同一行的开头。我想是命令提示符覆盖了那里的内容。简单!

最新更新