The elgrep library has evolved. So there is now a better alternative way to search for lines matching text_to_find but not matching text_to_ignore. One does no longer need to explicitly input Elisp functions.
One can define records of a file, and specify a regular expression that must not match in a record to be considered in the search for another regular ...
Looks like Emacs cannot find the external grep tool and uses its internal eshell-poor-mans-grep.
It interprets the first argument as expression and all other arguments as files.
Here is the doc string of poor-mans-grep which pityingly does not clarify the arguments:
eshell-poor-mans-grep is a compiled Lisp function in ‘em-unix.el’.