将grepped尾输出发送到netcat

时间:2016-03-11 00:45:55

标签: unix grep tail netcat

我正在尝试运行以下命令,并且没有任何内容被发送到netcat

tail -F file.txt | grep test | nc host 9999

如果我删除grep,则会成功跟踪尾部并发送到netcat。

如果我只是运行以下内容,数据会回来,所以我知道应该将数据发送到nc管道:

tail -F file.txt | grep test

有什么想法吗?

更新

我添加了以下内容以解除管道输出的缓冲,并且没有任何操作:

tail -F file.txt | stdbuf -o0 grep test | nc host 9999

当我打开线路缓冲时,输出被切断

tail -F file.txt | grep --line-buffered test | nc host 9999

哪里

workid: ID:ITEST_HGR1-EMS12103.1A156BB6CEB1:10F76E5D

发送
workid: ID:ITEST_HGR1-EMS12103.1A156BB6CEB1:10F7 

1 个答案:

答案 0 :(得分:4)

您需要更改grep的默认缓冲行为。如果您使用的是GNU grep,则可以使用grep --line-buffered,或尝试使用unbuffer