HomeFreeBSD

grep: fix null pattern and empty pattern file behavior

Description

grep: fix null pattern and empty pattern file behavior

The null pattern semantics were terrible because I tried to match gnugrep,
but I got it wrong. Let's unwind that:

  • The null pattern should match every line if neither -w nor -x.
  • The null pattern should match empty lines if -x.
  • The null pattern should not match any lines if -w.

The first two will stop processing (shortcut) even if additional patterns
are specified. In any other case, we will continue processing other
patterns. If no other patterns are specified beside a null pattern, then
we match if neither -w nor -x or set and do not match if either of those
are specified.

The justification for -w is that it should match on a whole word, but the
null pattern deos not have a whole word to match on.

Empty pattern files should never match anything, and more importantly, -v
should cause everything to be written.

PR: 253209

(cherry picked from commit f823c6dc730b0dd08b54a53be1d8fd587eee7021)

Details

Provenance
kevansAuthored on Feb 4 2021, 9:26 PM
Parents
rG07c84bb078e1: zgrep: fix exit status with multiple files
Branches
Unknown
Tags
Unknown