Date: Mon, 4 Aug 2008 22:24:21 +0200 From: Daniel Roethlisberger <daniel@roe.ch> To: Gabor Koevesdan <gabor@FreeBSD.org> Cc: FreeBSD Ports <freebsd-ports@freebsd.org> Subject: Re: bsd-grep-20080725_1 -v flag busted... Message-ID: <20080804202421.GA29719@hobbes.ustdmz.roe.ch> In-Reply-To: <4897518D.4090001@FreeBSD.org> References: <56E45E0F-29D4-4CA8-9936-384405AB874A@mac.com> <4897518D.4090001@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Gábor Kövesdán <gabor@FreeBSD.org> 2008-08-04: > Chuck Swiger escribió: > >I'd just updated the BSD grep port to bsd-grep-20080725_1, but > >regrettably have noticed that many things using grep stopped working. > >For example, running GNU-style ./configure hangs here: > > > > configure: creating ./config.status > > load: 1.15 cmd: sh 72964 [runnable] 7.60u 95.78s 14% 2260k > > > >A trivial test case: > > > >% echo 'fee\nfi\nfoe\nfum' | ./grep -v fi > >% echo 'fee\nfi\nfoe\nfum' | /usr/bin/grep -v fi > >fee > >foe > >fum > >% ./grep --version > >grep (BSD grep) 2.5.1-FreeBSD > Hello Chuck, > > thanks for your notes. It seems very strange to me, because GNU grep > produces the same output for me. Apart from this, the -v flag was really > broken, but I applied some fixes before updating the port and in the > version, which I committer, I thought that the -v flag was compatible. > > Here is what I get at the moment: > > > echo 'fee\nfi\nfoe\nfum' | ./grep -v fi > > echo 'fee\nfi\nfoe\nfum' | /usr/bin/grep -v fi > > /usr/bin/grep -V > grep (GNU grep) 2.5.1-FreeBSD > > Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > > It's still the same, thus I don't understand how you could produce that > output with GNU grep. I may be stating the obvious, but note that depending on your shell and it's configuration, echo might not translate \n to an actual newline. You might need to use `echo -e' instead of `echo' to get four lines printed instead of one. /bin/sh and bash need it, ksh doesn't, not sure about (t)csh. Also note that our /bin/echo doesn't know about -e and will never translate \n to a newline. The following should be more portable across different shells: printf 'fee\nfi\nfoe\nfum' | ./grep -v fi printf 'fee\nfi\nfoe\nfum' | /usr/bin/grep -v fi -- Daniel Roethlisberger http://daniel.roe.ch/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080804202421.GA29719>