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: santiagorr <at> riseup.net
Subject: bug#22820: closed (Re: bug#22820: 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 bug report

#22820: grep: Misleading error message when presenting a badly formed character class

which was filed against the grep package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 22820 <at> debbugs.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: 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".

[Message part 3 (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



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.