bsdgrep does not work with tail -f | grep combination

Alexey Shuvaev shuvaev at physik.uni-wuerzburg.de
Wed Aug 4 17:29:37 UTC 2010


On Wed, Aug 04, 2010 at 06:28:10PM +0200, Lars Engels wrote:
> On Wed, Aug 04, 2010 at 10:51:08AM -0400, Alexandre Sunny Kovalenko wrote:
> > On Tue, 2010-08-03 at 20:21 +0200, Gabor Kovesdan wrote:
> > > Em 2010.08.03. 19:25, poyopoyo at puripuri.plala.or.jp escreveu:
> > > > Hi,
> > > >
> > > > It seems bsdgrep does not work when piped from tail -f.
> > > > I'm running r210728.
> > > >
> > > > term0$ jot 10>  /tmp/1
> > > > term0$ tail -f /tmp/1 | grep 0
> > > > [no output]
> > > >
> > > > otherterm$ jot 10>>  /tmp/1
> > > > [no output to term0]
> > > >
> > > > =====
> > > >
> > > > with GNU grep:
> > > >
> > > > term0$ tail -f /tmp/1 | gnugrep 0
> > > > 10
> > > > otherterm$ jot 10>>  /tmp/1
> > > > [on term0]
> > > > 10
> > > > 10
> > > >    
> > > I've checked on 8.0 and GNU grep doesn't output anything either for me. 
> > > If you use tail -f, you will enter more lines and end it with EOF, won't 
> > > you? And then BSD grep will process the input and print out matches. I 
> > > don't think it's bad behaviour in itself but if you can explain why you 
> > > think it's bad I'm willing to change it.
> > > 
> > I am not sure it is specific to the GNU grep -- below is the example
> > from AIX 5.3:
> 
> [...]
> 
> Same on Solaris, so this is not a GNU feature.
>
Just to clarify things, bsdgrep of course works with tail -f,
the data just sits in its buffer:

~> jot 10 > test
~> tail -f test | grep 0

[on another terminal]

~> jot 10 >> test

[nothing happens on original terminal]

~> jot 4000 >> test

[on the original terminal]

10
10
10
20
30
40
50
60
70
80
90
100
101
102
103
[snip]
3950
3960
3970
3980
3990
4000

Alexey.


More information about the freebsd-current mailing list