On Fri, Jul 3, 2015 at 8:03 PM, Jim Meyering <j...@meyering.net> wrote: > On Fri, Jul 3, 2015 at 9:59 AM, Balazs Kezes <rlblas...@gmail.com> wrote: >> Hello! >> >> I'm running into issues with grep in -z mode. I've managed to minimize >> it into this: >> >> $ seq 2 | grep --null-data --quiet '[12].2' ; echo $? >> 0 >> $ seq 2 | grep --null-data --quiet '[1-2].2' ; echo $? >> 1 > > Thank you for the report. > I too would like those two commands to work the same way. > The problem is that when the regular expression contains a > bracket expression with a range, grep switches from using > its DFA matcher to relying on regex, but as Norihiro Tanaka > mentioned, grep's use of the regex matcher with the > --null-data (-z) option cannot match multi-line results. > > One can demonstrate the problem in the C locale too, > by using a back-reference, since that construct also causes > grep to use regex: > > $ printf '1\n1\n' |LC_ALL=en_US.UTF-8 src/grep -Ezq '1.1' > $ printf '1\n1\n' |LC_ALL=en_US.UTF-8 src/grep -Ezq '(1).\1' > [Exit 1] > $ printf '1\n1\n' |LC_ALL=C src/grep -Ezq '(1).\1' > [Exit 1] > > It'd be great to fix this, but it is not on my short-term radar, > though I will add some expected-to-fail tests.
Oh, nice! I see that Paul Eggert has just fixed this with the following patch: http://git.sv.gnu.org/cgit/grep.git/commit/?id=0e8fda0d880cccd0 So I'm closing this ticket.