🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.unix.shell
Article #4142

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

#4142
From: Lew Pitcher
Date: Fri, 04 May 2012 02:05
88 lines
3737 bytes
On Thursday 03 May 2012 21:25, in comp.unix.shell, kaz@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
Technical Details
Message-ID: <7QGor.22191$em4.6868@newsfe21.iad>
Path: arc1-ca.pugleaf.net!pr3ni1389pbb.0!nntp.google.com!news2.google.com!npeer02.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!post01.iad.highwinds-media.com!newsfe21.iad.POSTED!00000000!not-for-mail
References: <20120503180629.531@kylheku.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: 1025b4,4e23b22adef8b0c2
X-Google-NewGroupId: yes
X-Google-Attributes: gidfeffdbf771,domainid0,public,usenet
X-Google-Language: ENGLISH,ASCII-7-bit
Received: by 10.68.125.233 with SMTP id mt9mr4334813pbb.5.1336097155960;
        Thu, 03 May 2012 19:05:55 -0700 (PDT)
Path: arc1-ca.pugleaf.net!pr3ni1389pbb.0!nntp.google.com!news2.google.com!npeer02.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!post01.iad.highwinds-media.com!newsfe21.iad.POSTED!00000000!not-for-mail
From: Lew Pitcher <lpitcher@teksavvy.com>
Subject: Re: grep is screwed on Debian, Ubuntu and others ...
Newsgroups: comp.unix.shell,gnu.misc.discuss
Followup-To: comp.unix.shell
Reply-To: lew.pitcher@digitalfreehold.ca
References: <20120503180629.531@kylheku.com>
Lines: 89
MIME-Version: 1.0
Message-ID: <7QGor.22191$em4.6868@newsfe21.iad>
X-Complaints-To: abuse@UsenetServer.com
NNTP-Posting-Date: Fri, 04 May 2012 02:05:55 UTC
Date: Thu, 03 May 2012 22:05:54 -0400
X-Received-Bytes: 3351
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7Bit