bsdgrep does not work with tail -f | grep combination

freebsd-lists-erik at erikosterholm.org freebsd-lists-erik at erikosterholm.org
Wed Aug 4 16:59:42 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.

Why is bsdgrep reading the whole file before processing, anyway?  It
seems like line-by-line processing would be the way to go.

Erik


More information about the freebsd-current mailing list