GNU bug report logs -
#22820
grep: Misleading error message when presenting a badly formed character class
Previous Next
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
[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)]
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)]
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.