使用grep -r "something" .
时,会在找到内容时打印输出。
每当使用管道进行后处理时,它会等待直到收到所有输出。
是否有一些方法/句法用于每行管道?
不要为改进示例而烦恼,它只是一个例子:
grep -r "something" . | grep -v "somethingelse" # excluding somethingelse
结果只会在搜索完所有内容之后(由于管道|
),但我正在寻找语法,它会响应来自grep -r "something" .
的每一行,因为“行变为可用”。
可以管道到等待输入的程序并处理到达它的任何内容,但是使用管道只会完全发送数据吗?
有没有人有想法?
答案 0 :(得分:1)
使用grep
的{{1}}选项:
--line-buffered
答案 1 :(得分:1)
使用grep
,您可以使用--line-buffered
选项。如果程序没有类似的选项,您可以使用stdbuf
程序,例如:
tail -f access.log | stdbuf -oL cut -d ' ' -f1 | uniq
在此示例中,stdbuf
运行cut
程序,其输出流被修改为行缓冲。