I noticed this one while doing: $ grep sha[^s]e five-letter-words share
which doesn't fit with: $ grep sha.e five-letter-words shade shake shale shame shape share shave A reproducer is easy: $ echo shame |grep sha[^s]e (no output) Almost any change to the regex & input will make it work, even rot-13 of both. For example: $ echo shamel |grep sha[^s]e (no output, still fails) $ echo shamel |grep sha[^s]el shamel $ echo sshame |grep ssha[^s]e sshame $ echo funzr |grep fun[^f]r funzr $ grep --version grep (GNU grep) 3.7 Copyright (C) 2021 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Mike Haertel and others; see <https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>. This is Debian amd64, grep package version 3.7-1.