From `grep(1p)`: The pattern_list's value shall consist of one or more patterns separated by <newline> characters; Consider the following invocation: printf "foo\nbar\nbaz\n" | grep -Fv -e "$(printf "foo\nbar\n")" In accordance with the POSIX man page this should output the following: baz This is what GNU grep (for instance) outputs. The busybox implementation outputs: foo bar baz Instead. Looking at the implementation this is due to the fact that busybox does not check for newline in patterns when the -e option is given.
Fixed in git