使用管道替换Bash进程

Yev*_*y P 0 linux bash pipe

假设我有一个文件t.txt,其中包含许多包含'a'的行.我很疑惑为什么这不起作用:

cat <(tail -f t.txt | grep a)
Run Code Online (Sandbox Code Playgroud)

上面的命令只是挂起而不打印任何内容,即使每行都有匹配.这是因为猫正在等待"尾巴"而不是"grep"的输出吗?我怎样才能解决这个问题?

顺便说一句,我尝试了另一种带有双重过程替换的变体:

cat <(grep a <(tail -f t.txt))
Run Code Online (Sandbox Code Playgroud)

这也挂起而不打印任何东西.

有人有线索吗?

Cyr*_*rus 5

添加grep的选项--line-buffered.

man grep.