On Fri, Sep 4, 2015 at 8:45 PM, Paul Eggert <egg...@cs.ucla.edu> wrote: > Jim Meyering wrote: >> >> I too find this behavior surprising: >> >> $ seq 3|grep -F xxx$'\n' >> 1 >> 2 >> 3 >> >> This feels like a bug, since it's an artifact of how grep accumulates >> multiple keys internally: it uses newline as the separator >> (http://git.savannah.gnu.org/cgit/grep.git/tree/src/grep.c#n2308). >> Including a literal newline in the search string conflicts with that. > > > It's not an artifact; it's intended behavior. POSIX says that xxx$'\n' > (which expands to three 'x's followed by a newline) is a pattern_list, not a > pattern. A pattern_list is defined to be a series of patterns separated by > newlines (not terminated by newlines), so that pattern_list has two > patterns, xxx and the empty pattern.
Thanks for explaining. Looks like I'd better reread that part of the spec.