On a Centos 6 machine, this works:
bash -c \'if grep -qP --line-buffered \".+\" <(tail -n 1000 -F catalina.out) ; then echo \"yes\"; fi\'
<
The syntax <(...) is only supported by BASH.
For any POSIX shell, use this approach:
sh -c 'tail -n 1000 -F catalina.out | if grep -qP --line-buffered ".+" ; then ...'
i.e. move the stdin redirection in front of the if with a pipe. The if will pass stdin on to the grep.
if tail ...| grep won't work since the if won't be able to see it's then/fi because the pipe separates processes.