GNU bug report logs - #22820
grep: Misleading error message when presenting a badly formed character class

Previous Next

Package: grep;

Reported by: santiagorr <at> riseup.net

Date: Fri, 26 Feb 2016 14:52:02 UTC

Severity: normal

Done: Jim Meyering <jim <at> meyering.net>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Jim Meyering <jim <at> meyering.net>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#22820: closed (grep: Misleading error message when presenting
 a badly formed character class)
Date: Fri, 26 Feb 2016 16:50:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Fri, 26 Feb 2016 08:49:32 -0800
with message-id <CA+8g5KG+qJA+1Sk9ErBOd7ij9gEE+bwOca02_DGT=G=JEbs5sw <at> mail.gmail.com>
and subject line Re: bug#22820: grep: Misleading error message when presenting a badly formed character class
has caused the debbugs.gnu.org bug report #22820,
regarding grep: Misleading error message when presenting a badly formed character class
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
22820: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=22820
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: santiagorr <at> riseup.net
To: bug-grep <bug-grep <at> gnu.org>
Subject: grep: Misleading error message when presenting a badly formed
 character class
Date: Fri, 26 Feb 2016 15:51:18 +0100
Hi,

I'd like to forward a bug filled by Gunnar Wolf in Debian some time
ago:

"It seems that whenever egrep finds something it cannot digest inside a
character class, it spews out the same error string: «Unmatched [ or [^».
This can be misleading and opens the way for long debugging time,
specially when trying to understand complex regexes. To illustrate the
point:

$ echo | egrep -v '[[:digit]]+'
egrep: Unmatched [ or [^

The brackets _are_ balanced, however the character class is not (it
lacks a finishing colon)."

Thanks,

Santiago


[Message part 3 (message/rfc822, inline)]
From: Jim Meyering <jim <at> meyering.net>
To: Bailes Magio <santiagorr <at> riseup.net>
Cc: 22820-done <at> debbugs.gnu.org
Subject: Re: bug#22820: grep: Misleading error message when presenting a badly
 formed character class
Date: Fri, 26 Feb 2016 08:49:32 -0800
On Fri, Feb 26, 2016 at 6:51 AM,  <santiagorr <at> riseup.net> wrote:
> Hi,
>
> I'd like to forward a bug filled by Gunnar Wolf in Debian some time
> ago:
>
> "It seems that whenever egrep finds something it cannot digest inside a
> character class, it spews out the same error string: «Unmatched [ or [^».
> This can be misleading and opens the way for long debugging time,
> specially when trying to understand complex regexes. To illustrate the
> point:
>
> $ echo | egrep -v '[[:digit]]+'
> egrep: Unmatched [ or [^
>
> The brackets _are_ balanced, however the character class is not (it
> lacks a finishing colon)."

Thank you for forwarding that.
The diagnostic was fixed in gnulib via a commit last month:
git.savannah.gnu.org/cgit/gnulib.git/commit/?id=7c6e85cf4eccbd5129
Thus, as long as grep is configured --with-included-regex,
you will now see this:

  $ grep -E '[[:digit]]+'
  grep: Unmatched [, [^, [:, [., or [=

If grep is configure with --without-included-regex, you will
still see the inferior diagnostic, but that string will then be
coming from your system's C library.

Since fixing glibc's copy of regcomp.c is outside the scope
of grep's issue tracker, I'm marking this as "done".


This bug report was last modified 9 years and 85 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.