tags 33062 notabug close 33062 stop On Tue, Oct 16, 2018 at 2:42 PM Johannes Riecken <johannes.riec...@gmail.com> wrote: > *Bug summary: *GNU grep 3.0-2 matches too lazily when invoked with -zoP and > matching backreference followed by newline > > *Steps to reproduce:* > > Create file cases: > > foo > bar > cases: > 1: foo > 2: bar > baz > cases: > 3: baz > quux > > And run grep -zoP '(\s*)cases:\n(\1.*\n)*' cases > > *Expected output:* > > cases: > 1: foo > 2: bar > cases: > 3: baz > > * Actual output:* > > cases: > > cases:
Thanks for the report. However, this is not a bug. The \s in your regexp matches the preceding newline, too, and that forces the behavior you see. I presume you wanted something like this: $ printf '%s\n' foo bar ' cases:' ' 1: foo' ' 2: bar' baz ' cases:' ' 3: baz' quux\ | grep -zoP '( *)cases:\n(\1.*\n)*' cases: 1: foo 2: bar cases: 3: baz The adjusted regexp works because it accepts only spaces in the group. Don't be tempted to allow TABs, but rather ensure the input is expanded to use only spaces for indentation.