The following does work correctly in GNU grep 2.4.2: $ echo -e "]name\n name" | grep '[^]]name' It matches ' name' and does not match ']name' as it should. However the RedHat patched version of GNU grep 2.4.2 matches /both/ ']name' and ' name'. This is not good especially since this construct is used a lot in scripts like so: $ ps ax | grep '[^]]progname' To filter out all instances of progname except the grep invocation.
still doesn't work
Fixed in 2.5e-2
Upgraded to 2.5e-2 to fix this one but it introduces a new bug in grep causing ./configure scripts (autoconf) to give wrong results ! Here is the proof: this line shows no match, and that's incorrect echo "mode_t;" | grep "mode_t[^a-zA-Z_0-9]" I checked Rawhide today and the 2.5-e2 version is no longer there, there is 2.4.2-7 instead which appears not to have any of these bugs.