Re: grep is screwed on Debian, Ubuntu and others ...

2012-05-04 Thread Richard Kettlewell
Lew Pitcher lpitc...@teksavvy.com writes:
 k...@kylheku.com wrote:

 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=655293
 
 I ran into this doing a simple grep job that needed to match upper
 case characters, and so I started Googling.  This was only reported in
 January.
 
 But the Red Hat people knew about what looks like the same bug two years
 ago. Oops, they didn't share!
 
 https://bugzilla.redhat.com/show_bug.cgi?id=583011
 
 (So much for the spirit of collaboration in open source. My distro, my
 patches, screw you!)

The fix linked from the RH bug is to upstream grep, so it's not clear in
what sense they didn't share.
 
 Second; I guess that your abberent grep behaviour wrt 'a' is version
 dependant. Under GNU grep 2.5.3 (32bit Slackware Linux 12.2), I don't see
 the same results. In fact, I see the results you'd properly expect from
 grep.

It looks like it was dependent on both version and locale, as well as on
competence with regexp syntax.

-- 
http://www.greenend.org.uk/rjk/
___
gnu-misc-discuss mailing list
gnu-misc-discuss@gnu.org
https://lists.gnu.org/mailman/listinfo/gnu-misc-discuss


Re: grep is screwed on Debian, Ubuntu and others ...

2012-05-04 Thread Wolfram Gloger
Kaz Kylheku k...@kylheku.com writes:

 Watch this:
 
 $ echo a | grep '[A-B]'
 a

I can't reproduce this on Debian.  Neither in lenny nor in squeeze,
not even in etch.  (C and de_DE.UTF-8 locales tested)

What is your 'Debian'?

 $ echo b | grep '[A-B]'
 $ echo b | grep '[:upper:]'
 $ echo B | grep '[:upper:]'
 $ echo E | grep '[:upper:]'
 $ echo e | grep '[:upper:]'
 e

I can reproduce these -- are all expected, as explained in followup.

Regards,
Wolfram.
___
gnu-misc-discuss mailing list
gnu-misc-discuss@gnu.org
https://lists.gnu.org/mailman/listinfo/gnu-misc-discuss


Re: grep is screwed on Debian, Ubuntu and others ...

2012-05-04 Thread Kaz Kylheku
On 2012-05-04, Wolfram Gloger wm...@dent.med.uni-muenchen.de wrote:
 Kaz Kylheku k...@kylheku.com writes:

 Watch this:
 
 $ echo a | grep '[A-B]'
 a

 I can't reproduce this on Debian.  Neither in lenny nor in squeeze,
 not even in etch.  (C and de_DE.UTF-8 locales tested)

Me neither; I was mistaken about that. Sorry!
___
gnu-misc-discuss mailing list
gnu-misc-discuss@gnu.org
https://lists.gnu.org/mailman/listinfo/gnu-misc-discuss


grep is screwed on Debian, Ubuntu and others ...

2012-05-03 Thread Kaz Kylheku
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=655293

I ran into this doing a simple grep job that needed to match upper
case characters, and so I started Googling.  This was only reported in January.

But the Red Hat people knew about what looks like the same bug two years ago.
Oops, they didn't share!

https://bugzilla.redhat.com/show_bug.cgi?id=583011

(So much for the spirit of collaboration in open source. My distro, my
patches, screw you!)

Watch this:

$ echo a | grep '[A-B]'
a
$ echo b | grep '[A-B]'
$ echo b | grep '[:upper:]'
$ echo B | grep '[:upper:]'
$ echo E | grep '[:upper:]'
$ echo e | grep '[:upper:]'
e

Ooops! Someone doesn't have a regression test suite, or at least not one
that is worth a damn.
___
gnu-misc-discuss mailing list
gnu-misc-discuss@gnu.org
https://lists.gnu.org/mailman/listinfo/gnu-misc-discuss


Re: grep is screwed on Debian, Ubuntu and others ...

2012-05-03 Thread Lew Pitcher
On Thursday 03 May 2012 21:25, in comp.unix.shell, k...@kylheku.com wrote:

 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=655293
 
 I ran into this doing a simple grep job that needed to match upper
 case characters, and so I started Googling.  This was only reported in
 January.
 
 But the Red Hat people knew about what looks like the same bug two years
 ago. Oops, they didn't share!
 
 https://bugzilla.redhat.com/show_bug.cgi?id=583011
 
 (So much for the spirit of collaboration in open source. My distro, my
 patches, screw you!)
 
 Watch this:
 
 $ echo a | grep '[A-B]'
 a
 $ echo b | grep '[A-B]'
 $ echo b | grep '[:upper:]'
 $ echo B | grep '[:upper:]'
 $ echo E | grep '[:upper:]'
 $ echo e | grep '[:upper:]'
 e

Hmmm...  A couple of observations

First, IIRC, the grep character classes (such as [:upper:]) syntatically
substitute for the list of characters that are enclosed by the square
brackets.

Consequently, the alternate form of '[A-B]' is not '[:upper:]', but instead
is '[[:upper:]]'. That is, the '[:upper:]' is enclosed within a set of
square brackets, just like 'A-B' is.

Thus, your examples that use
  grep '[:upper:]'
should only match the characters ':', 'u', 'p', 'e', or 'r', something that
your final example /does/ show.

Second; I guess that your abberent grep behaviour wrt 'a' is version
dependant. Under GNU grep 2.5.3 (32bit Slackware Linux 12.2), I don't see
the same results. In fact, I see the results you'd properly expect from
grep.

  ~ $ grep -V
  GNU grep 2.5.3

  Copyright (C) 1988, 1992-2002, 2004, 2005  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.

  ~ $ for element in a b A B e ;
   do
 echo Using $element into grep [A-B]
 echo $element | grep '[A-B]'
 echo Using $element into grep [:upper:]
 echo $element | grep '[:upper:]'
 echo Using $element into grep [[:upper:]]
 echo $element | grep '[[:upper:]]'
   done  
  Using a into grep [A-B]
  Using a into grep [:upper:]
  Using a into grep [[:upper:]]
  Using b into grep [A-B]
  Using b into grep [:upper:]
  Using b into grep [[:upper:]]
  Using A into grep [A-B]
  A
  Using A into grep [:upper:]
  Using A into grep [[:upper:]]
  A
  Using B into grep [A-B]
  B
  Using B into grep [:upper:]
  Using B into grep [[:upper:]]
  B
  Using e into grep [A-B]
  Using e into grep [:upper:]
  e
  Using e into grep [[:upper:]]

HTH
-- 
Lew Pitcher

___
gnu-misc-discuss mailing list
gnu-misc-discuss@gnu.org
https://lists.gnu.org/mailman/listinfo/gnu-misc-discuss