Here's a shell session illustrating the problem on Fedora 37, which has GNU grep 3.7. The same bug is still in bleeding-edge GNU grep.

  $ export LC_ALL=en_US.utf8
  $ printf '\300\n' | grep '\b'
  grep: (standard input): binary file matches
  $ printf '\300\n' | grep -P '\b'
  $

Plain grep finds a word boundary in the input even though the input contains no words (just an encoding error). 'grep -P' does the right thing.

The underlying issue is in the glibc regex code so the fix should be in glibc / Gnulib, but I thought I'd report it here before I forgot it.



Reply via email to