grep に普通にパイプで渡すと、その入力からパターンを検索することになります。
mint@ubuntu:~/greptest$ echo abc ; echo cde; echo efg abc cde efg mint@ubuntu:~/greptest$ (echo abc ; echo cde; echo efg) | grep c abc cde
パイプで検索語句を渡したい場合は、 -f -
を使います。-f は検索パターンをファイルで指定するオプションです。
mint@ubuntu:~/greptest$ cat text.txt abc cde efg mint@ubuntu:~/greptest$ echo c | grep text.txt -f - abc cde
検索パターンを複数入力することも出来るようです。
mint@ubuntu:~/greptest$ (echo b ; echo d) | grep text.txt -f - abc cde
似たようなことをxargsを使っても出来ます。ただし、複数の検索パターンにヒットすると、結果が複数回出てしまう点が異なっています。また、二重引用符で囲む必要があったりなかったりと細かい違いもあるかと思います。-e は検索パターンを明示的に指定するオプションです。
mint@ubuntu:~/greptest$ (echo b ; echo d) | xargs -n 1 grep text.txt -e abc cde