我正在使用锯和杰克加上一些过滤来获取打印精美的 JSON 日志流,但我下面的内容没有输出。它只是挂着。
saw watch /aws/ecs/container-log \
| sed -e 's/^\[.*\] \(.*\)(.*)/\1/' \
| tr '\n' '\0' \
| xargs -0 -n1 jq .
>
saw watch
流式传输容器日志,类似于tail -f log.file
.我用来sed
过滤掉时间戳和日志 ID,剩下的就是 JSON。
当我刚看完sed
手表时,它正确地过滤掉了日志流的开头。
saw watch /aws/ecs/container-log \
| sed -e 's/^\[.*\] \(.*\)(.*)/\1/'
> {"data": "..."}
但是当我tr
重新添加时,它再次挂起。
saw watch /aws/ecs/container-log \
| sed -e 's/^\[.*\] \(.*\)(.*)/\1/' \
| tr '\n' '\0'
>
然而,tr
工作echo
正常。
echo hey | hexdump -c
> 0000000 h e y \n
> 0000004
echo hey | tr '\n' '\0' | hexdump -c
> 0000000 h e y \0
> 0000004
可能是什么原因造成的?我该如何解决?
我在用着
- zsh 5.8 (x86_64-apple-darwin19.3.0)
- macOS 10.15.3
- coreutils: stable 8.31 (通过brew安装)
- 来自 coreutils 的 tr
我找不到 sed 的版本,但man sed
已标记为BSD May 10, 2005
.