You can use `tee` and process substitution for this: cat file.txt | tee >(pbcopy) | grep errors This will send all the output of `cat file.txt` to `pbcopy`, and you'll only get the result of `grep` on your console. You can put multiple processes in the `tee` part: cat file.txt | tee >(pbcopy) >(do_stuff) >(do_more_stuff) | grep errors