# Usage: zpgrep ... # zpgrep() { local file pattern pattern=$1 shift if ((! ARGC)) then set -- - fi pcre_compile $pattern pcre_study for file do if [[ "$file" == - ]] then while read -u0 buf; do pcre_match $buf && print $buf; done else while read -u0 buf; do pcre_match $buf && print $buf; done < "$file" fi done }