我正在尝试运行以下命令,并且没有任何内容被发送到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
答案 0 :(得分:4)
您需要更改grep
的默认缓冲行为。如果您使用的是GNU grep,则可以使用grep --line-buffered
,或尝试使用unbuffer
。