sed 在管道传输时无法正常工作

Mat*_*ing 4 pipe sed shell-script

由于某种原因,当将 SSH 的命令输出通过管道传输到 sed 时,我不会有实时输出:

ssh someuser@somehost 2>&1 | sed -e "s/\[32//g" | tee logging
Run Code Online (Sandbox Code Playgroud)

我怀疑输出 dit 没有换行符,但是当我删除 sed 命令并运行时:

wc -l logging
Run Code Online (Sandbox Code Playgroud)

它返回 6,这是正确的返回数。有人知道我在这里缺少什么吗?

[编辑]我完全忘记提及以下内容:运行

ssh someuser@somehost 2>&1 | sed -e "s/\[32//g"
Run Code Online (Sandbox Code Playgroud)

返回所有值没有问题,但是,一旦我将 tee 添加到混合中,我将无法获得输出,直到我点击 ^C...甚至标准输出重定向都不起作用(ssh someuser@somehost 2>&1 | sed -e “s/[32//g”> 文件)。只需 ssh 和 tee 也可以正常工作。

小智 7

流编辑器、sed、缓冲区,通过“-u”或“--unbuffered”禁用。

tail -f some/log_file | sed -u 's/foo//g' | grep bar
Run Code Online (Sandbox Code Playgroud)